redis常用数据结构
![file](https://img-blog.csdnimg.cn/img_convert/41c2bf2ec2483d30bda074d309bf80d3.png)
基本操作
# 获取key的value值
GET key
# 设置key的value值
SET key value
# 删除key及其value值(所有命令支持)
DEL key
# 检查key是否存在
EXISTS key
# 修改key名称
RENAME key newkey
# 返回key所储存的值的类型
TYPE key
自增自减操作
# 将key的value值,自增1,返回自增后的结果
INCR key
# 将key的value值,自减1,返回自减后的结果
DECR key
# 将key的value值,加上整数amount
INCRBY key amount
# 将key的value值,减去整数amount
DECRBY key amount
# redis 2.6,存储的值加上浮点数amount
INCRBYFLOAT key amout
字符串操作
# 将key对应的value值,追加value
APPEND key value
# 获取[start, end)子串
GETRANGE key start end
二进制操作
# 将字节串看做二进制位串,将偏移为offset的位,设置为value
SETBIT key offset value
# 将字节串看做二进制位串,将偏移为offset的位取出返回
GETBIT key offset
时间戳操作
# 设置key过期时间
EXPIRE key seconds
# 设置key过期时间戳
EXPIREAT key timestamp
# key设置过期时间(毫秒)
PEXPIRE key milliseconds
# 设置key过期时间戳(毫秒)
PEXPIREAT key milliseconds-timestamp
# 移除key的过期时间,key将持久保持
PERSIST key
# 获取key的剩余缓存时间(秒)
TTL key
keys组操作
# 设置多组k-v
MSET keyA valA keyB valB
# 一次获得多个key值
MGET keyA keyB
# 查找所有key
KEYS *
# 查找所有符合给定pattern的key
KEYS pattern
# 删除当前选择数据库中的所有key
FLUSHDB
# 删除所有数据库中的所有key
FLUSHALL
# 返回当前数据库中key的数目
DBSIZE
set(集合操作)
Set是集合,它是string类型的无序集合。set是通过hash table实现的,添加、删除和查找的复杂度都是O(1);支持并集,交集,差集。
# 向set中添加多个value
SADD key valueA valueB valueC
# 删除set中值为value的元素
SREM key value
# 判断set中是否有值
SISMEMBER set-key value
# 获取set中的所有value
SMEMBERS key
# 返回结合包含元素的数量
SCARD key
# 随机从集合返回一个或多个元素,count为正元素返回元素不重复,count为负返回元素会重复
SRANDMEMBER key count
# 随机移除集合中的一个元素,并返回
SPOP key
# 返回setA和setB的差集,A-B
SDIFF set-keyA set-keyB
# 返回setB和setA的差集,B-A
SDIFF set-keyB set-keyA
# 将差集A-B,保存至dst-key集合
SDIFFSTORE dst-key keyA keyB
# 返回setA和setB的交集
SINTER set-keyA set-keyB
# 将交集,保存至dst-key集合
SINTERSTORE dst-key keyA keyB
# 返回setA和setB的并集
SUNION set-keyA set-keyB
# 将并集,保存至dst-key集合
SUNIONSTORE dst-key keyA keyB
zset(有序集合)
ZSet有序集合,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素时候可以指定。每次指定后,zset会自动重新按新的值调整顺序。
可以理解为有两列字段的数据表,一列存value,一列存顺序编号。
# 将带有分值的member加入有序集合
ZADD key score member
# 从有序集合中删除member
ZREM key member
# 返回有序集合成员数量
ZCARD key
#将member成员的分值加上increment
ZINCRBY key increment member
# 返回分值介于min和max之间的成员数量
ZCOUNT key min max
# 返回成员member在有序集合中的排名
ZRANK key member
# 返回成员member的分值
ZSCORE key member
# 返回[start stop]的成员,如果设定WITHSCORES选项,分值也将返回
ZRANGE key start stop [WITHSCORES]
hash操作
Redis hash添加、删除操作都是O(1),特别适用于存储对象,将一个对象存储在hash类型中会占用更小的内存,并且可以更方便的存取整个对象。
# 将key的field设置为指定value
HSET hash-key field value
# 获取key的field值
HGET hash-key field
# 获取键值对数量
HLEN key
#返回所有key-value
HGETALL hash-key
# 删除field及其对应的value
HDEL hash-key field
# 批量设置/获取
HMSET key fieldA valueA fieldB valueB
HMGET key fieldA fieldB
HGETALL key
# 返回所有field
HKEYS key
# 返回所有value
KVALS key
list命令
list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等,操作中key理解为链表的名字。
Redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列
# 头插,按照顺序头插push
LPUSH key valueA valueB valueC
# 尾插,按照顺序尾插push
RPUSH key valueA valueB valueC
# 从list的头部删除元素,并返回删除元素
LPOP key
# 从list的尾部删除元素,并返回删除元素
RPOP key
# 从list返回index位置的元素值
LINDEX key index
# [0,1],右结束索引值-1,表示取出所有元素
LRANGE key 0-1
# 在指定位置插入新值
LSET key index new-value
# 根据key删除list中n个和value相同的元素,number为0,全部删除
LREM key number value
LINSERT key AFTER/BEFORE 定位值 insert-value