Redis数据库基本操作

Posted fancyblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis数据库基本操作相关的知识,希望对你有一定的参考价值。

#redis 基本操作

进入redis

redis-cli   

#不能进入,就安装:
sudo apt-get update
sudo apt-get install redis-server

exit		#退出
Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。
#默认使用 0 号数据库   默认开16个库
SELECT 1 	# 使用 1 号数据库,Redis 现在的命令提示符多了个 [1]

##redis五种数据类型、及操作

  • string 字符串
  • list 列表
  • hash 哈希
  • set 集合
  • sorted sets 有序集合

string

string 类型是 redis 最基本的类型, string 类型,一个 key 对应一个 value,一个 value 最大能存储512MB的数据。
  • set key value
    • 设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。
    • set name ‘juhao‘
  • get key

    • 返回key的值,若key不存在则返回nil

      ?

      mset key value [key value..]

    • 为多组key设置值,该操作为原子操作,要么一组都设置成功,要么一组都设置失败;

    • mset username ‘root‘ password ‘123‘ name ‘juhao‘

      ?

  • mget key [key...]

    • 返回一个或多个key的值,若key不存在返回nil,若key存在但不是字符串返回nil

    • mget username, password, name		#有,号会被认为是key的一部分
      mget username password name
      

      ?

  • append key value

    • 将指定的值追加到key末尾,若key不存在,则创建并赋值,返回追加后的字符串长度

    • append name love

  • ttl key

    • 返回key的剩余生存时间, -1 表示永久存在, -2表示不存在

    ?

  • **set key value ex seconds **

    • 设置 key的同时,设置过期时间(单位:秒) key 过期后将不再可用,会被系统自动删除。

    • set age 18 ex 20	
      或 setex key seconds value 例: ( setex sex 20 男‘ )
      
  • persist key

    • 移除指定key的生存时间,成功返回1,若key不存在或不存在生存时间时返回0;

?

###全局key操作

  • rename key newkey 改名

    • 当key和newkey相同或者key不存在时返回一个错误,当newkey已存在时则会覆盖;

    •  keys *					# 查看所有的key
      
       del key					# 删除	返回成功的个数
      
       exists key				# 查看key是否存在  返回存在个个数
      
       type key				# 查看key类型
      
       expire key seconds		#设置过期时间	
          
       persist key			#移除过期时间
       	
       flushdb			#删除当前数据库中的所有key
      
       flushall			#删所有
      

      ?

list

列表的元素类型为string按照插入顺序排序
在列表的头部或者尾部添加元素
  • lpush key value[value...]

    • 在头部插入数据

    • lpush  key  value   
    •   #例  lpush my_list a b c d
      
    • 在尾部添加数据

    • rpush  key  value   
    •   #例  rpush my_rlist a b c d
      
  • lindex key index

    • 返回列表中元素的值。index从0开始,当index超出索引时返回null

    • lindex my_list 3 #查看第三个
      

    ?

  • lrange key start stop

    • 查看索引范围内元素的值

    • lrange my_list 0 -1 #查看所有值
      
  • llen key
    • 返回列表的长度

      ?

  • lset key index newvalue

    • 指定索引号进行修改

    • lset my_list 0  ‘hello‘
      

?

  • 删除

    • lpop key 删除左边第一个

    • rpop my_list

    • rpop key 删除右边第一个

    • rpop my_list

      ?

    • lrem key count value

      • 删除指定数量的value值

      • rpush  test_list  c a a b b c  d e a d f m c
        
        #count > 0 从左往右 删除数量为count的value
        例 : lrem test_list 2 a
        lrange test_list 0 -1
        
        #count = 0 删除所有的 value
        例 : lrem test_list 0 d#count < 0 从右往左 删除数量为count的value
        例 : lrem test_list -2 c
        

        ?

hash

是一个键值(key=>value)对集合。
是string 类型的 field 和 value 的映射表
hash 特别适合用于存储对象 field 域 value

设置/修改

  • hset key field value

    • 将field-value设置到hash表中

    • 若key不存在会新建hash表再赋值,已存在则会覆盖;

    • hset user name juhao #user  name:juhao
      
  • hmset key field1 value1[field value...]

    • 同时设置多个

    • # user name:juhao , age:18
      hmset user name juhao age 18 
      

查看

  • hget key field

    • 获取value

    • hget user name
      
  • hmget key field[field...]

    • 获取多个value

    • hmget user name age
      
  • hvals key

    • 获取全部value
  • hkeys key

    • 获取所有的field
  • hgetall key
    • 获取全部field 和 value
  • hlen key
    • 查看有几个键值对
  • hexists key field
    • 判断hash表中指定域是否存在,
    • 返回1,若key或field不存在则返回0;

删除

  • hdel key field

    • hdel user name
      

      ?

set

元素为string类型
无序集合
元素具有唯一性,不重复 

  • sadd key member [member...] 增加元素

    • 将一个或多个member元素加入到集合key中,若member已存在那么会忽略此元素,

    • sadd my_set m n b v c x z b

  • scard key

    • 返回集合key中元素的个数;
  • smembers key

    • 获取集合中所有元素
  • sismember key member 判断集合存在某个值
    • 判断member在key中是否已存在, 返回0或1
    • sismember my_set b
  • 删除

    • srem key member [member...]

      • 移除一个或多个元素,不存在的member会被忽略,返回被移除元素个数

      • srem my_set a b n 
        
    • spop key 随机删除

      • 移除并返回集合中的一个随机元素,当key不存在时返回NULL

        ?

    ?

  • 交集

    # sinter key1 key2 ..
    例
    sinter my_set my_set2
    

    把 key1 key2的交集合并到newkey

    # sinterstore newkey key1 key2
    例
    sinterstore  new_set my_set my_set2
    
  • 并集

    # sunion key1 key2 ...
    例
    sunion my_set my_set2
    
    

    把 key1 key2的并集合并到newkey

    # sunionstore newkey key1 key2
    例sunionstore new_set2 my_set my_set2
    
  • 差集

    # sdiff key1 key2
    sdiff my_set my_set2
    

    把 key1 key2的差集合并到newkey

    # sdiffstore newkey key1 key2
    例sdiffstore new_set3 my_set my_set2
    

###zset

类似于Set,不同的是Sorted中的每个成员都分配了一个分数(Score)用于对其中的成员进行排序(升序)。
zset的成员是唯一的,但分数(score)却可以重复。

添加/修改

  • zadd key score member[ [score member] ..]

    • 设置, 存在就更新

    • zadd  my_zset 1 ‘one‘
      zadd  my_zset 2 ‘tow‘
      
      zadd  my_zset 10 one 20 two 30 three 40 four 50 ‘five‘
      

查看

  • zscore key member

    • 查看score值

      zscore my_zset two

    ?

  • zrange key start stop[withscores]

    • 按索引返回key的成员, withscores表示显示score

    • zrange my_zset 0 -1   #显示全部
      
  • zrangebyscore key min max

    • 返回集合中 score 在给定区间的元素

    • zrangebyscore zset 10 30
      

    ?

删除

  • zrem key member [member...]

    • 移除有序集合中的一个或多个元素,若member不存在则忽略;

    • zrem my_zset two 
      

    ?

  • zremrangebyrank min max :

    • 删除集合中索引在给定区间的元素
    zremrangebyrank my_zset 1 3
    
  • zremrangebyscore min max :

    • 删除集合中 score 在给定区间的元素
    zremrangebyscore my_zset 10 30
    

redis配置

vim /etc/redis/redis.conf	#配置文件地址

port 6379 			# 默认端口    
logfile /var/log/redis.log 	 # 日志文件位置    
dbfilename dump.rdb 		# RDB持久化数据文件名 ,  
dir /var/lib/redis	#指定本地数据库存放目录
bind 0.0.0.0		# 指定IP进行监听   

requirepass  yourpassword    #密码
	
save 900 1		#这三个是持久化,注释掉就关掉持久化
save 300 10
save 60 10000

启动/停止/重启命令

/etc/init.d/redis-server stop
/etc/init.d/redis-server start
/etc/init.d/redis-server restart

设置密码

config get requirepass	//获取当前密码
	#默认情况下 requirepass 参数是空的,
这就意味着你无需通过密码验证就可以连接到 redis 服务 进入配置文件 vim /etc/redis/redis.conf 找到requirepass 设置密码 vim 查找 /requirepass 按n查找下一个 requirepass yourpassword //此处注意,行前不能有空格 重启redis redis-cli shutdown 进入在添加 auth 123456 登陆的时候加上密码 redis-cli -a 123456

 

以上是关于Redis数据库基本操作的主要内容,如果未能解决你的问题,请参考以下文章

Redis数据库安装部署及基本操作!

redis的基本操作

Redis数据库安装部署及基本操作!

redis python 操作 Python操作Redis数据库

redis基本操作

redis基本操作命令