Redis常用命令
记录一下Redis常用命令 以防忘记
一、key(键)
1.模糊查询key:keys 有三个通配符 *,?,[]
2.randomkey:随机返回key
3.type key:返回key 的存储类型
4.exists key:判断key是否存在
5.del key:删除key
6.rename/renamenx key newkey:改名,如果newkey不存在则修改成功
7.move key 1 :将key移动到1 数据库(redis默认使用0数据库)
8.select 0/1:使用 0 或者 1 数据库
9.ttl key:查询key 的生命周期(秒数,当key不存在是返回-2,key如果没有设置生命周期则返回-1)
10.pttl key:查询key的生命周期(毫秒数)
11.expire key 整数值:设置key的生命周期,以秒为单位
12.pexpire key 整数值:设置key的生命周期,以毫秒为单位
13.persist key:把指定key设置为永久有效
14.flushdb:删除当前数据库当中所有的key
15.flushall:删除所有数据库当中所有的key
二、String(字符串)
1.append key value:将value追加到原值的后面(如果键不存在,就相当于set key value)
2.set key value [ex 秒数] [px 毫秒数]
如果ex和px同时写,则以后面的有效期为准
如果key不存在则建立
如果key存在则修改其值
3.get key:取值
4.mset key1 value1 key2 value2 :一次设置多个值
5.mget key1 key2:一次获取多个值
6.getrange key start stop:获取字符串中[start,stop]范围的值
对于字符串的下标,左数从0开始,右数从-1开始
注意:当start>length,则返回空字符串
当stop>=length,则截取至字符串尾
如果start所处位置在stop右边,则返回空字符串
7.getset key newValue:获取并返回旧值,再设置新值
8.incr key:自增每次增1,返回新值如果incr一个不是int类型的value则返回错误,incr一个不存在的key,则设置key为1
9.incrby key value:自增value如果value不是int类型的则返回错误
10.Incrbyfloat key 0.7:自增浮点数
11.strlen key:获取指定key的value的长度
12.setex key time value:设置key对应的值value,并设置有效期为time秒
三、List(列表)
Redis的list类型其实就是一个每个子元素都是string类型的双向链表,链表的最大长度是2^32。list既可以用做栈,也可以用做队列。
list的pop操作还有阻塞版本,主要是为了避免轮询
(1)lpush key value:把值插入到链表头部(从左边插入)
(2)rpush key value:把值插入到链表尾部(从右边插入)
(3)lpop key :返回并删除链表头部元素
(4)rpop key: 返回并删除链表尾部元素
(5)lrange key start stop:返回链表中[start, stop]中的元素(0,-1表示从0下标开始,-1表示无限)
(6)lset key index value:将list下标值替换
(7)lrem key count value:从链表中删除value值,删除count的绝对值个value后结束
count > 0 从表头删除 count < 0 从表尾删除 count=0 全部删除
(8)ltrim key start stop:剪切key对应的链接,切[start, stop]一段并把该值重新赋给key
(9)lindex key index:返回index索引上的值
(10)llen key:计算链表的元素个数
(11)linsert key after|before search value:在key 链表中寻找search,并在search值之前|之后插入value
(12)rpoplpush source dest:把source 的末尾拿出,放到dest头部,并返回单元值
业务逻辑: rpoplpush task bak接收返回值并做业务处理
如果成功则rpop bak清除任务,如果不成功,下次从bak表取任务
(13)brpop,blpop key timeout:等待弹出key的尾/头元素
timeout为等待超时时间,如果timeout为0则一直等待下去
应用场景:长轮询ajax,在线聊天时能用到
四、hash(哈希表)
Redis hash 是一个string类型的field和value的映射表,它的添加,删除操作都是O(1)(平均)。hash特别适用于存储对象,将一个对象存储在hash类型中会占用更少的内存,并且可以方便的存取整个对象。
配置: hash_max_zipmap_entries 64 #配置字段最多64个
hash_max_zipmap_value 512 #配置value最大为512字节
注:下面的key 就是 hash
1.hset myhash field value:(hset cong a 1)将a的值设为1
2.hget key field :返回field的值
3.hkeys key :查看所有的field
4.hvals key:查看所有的value
5.hgetall key:查看所有的field和value
6.hexists key field:判断field是否存在,如果存在返回1不存在返回0
7.hdel key field :删除field
8.hlen key :返回key的长度
9.hmset key field value field value:给多个field设值
10.hmget key field field:得到多个field的值
五、集合结构操作
特点:无序性,确定性,唯一性
(1)sadd key value1 value2:往集合里面添加元素
(2)smembers key:获取集合所有的元素
(3)srem key value:删除集合某个元素
(4)spop key:返回并删除集合中1个随机元素(可以做抽奖,不会重复抽到某人)
(5)srandmember key:随机取一个元素
(6)sismember key value:判断集合是否有某个值
(7)scard key:返回集合元素的个数
(8)smove source dest value:把source的value移动到dest集合中
(9)sinter key1 key2 key3:求key1 key2 key3的交集
(10)sunion key1 key2:求key1 key2 的并集
(11)sdiff key1 key2:求key1 key2的差集
(12)sinterstore res key1 key2:求key1 key2的交集并存在res里