redis的数据结构
string value结构就是字符串
hash key-value
list 多个元素组成的列表
set 集合
zset 有序集合(每个元素带了一个序号)
string 的用法
单值缓存
set key value
设置多个值
MSET key value 多个 内存占用也少,效率快点
分布式锁的用法
setnx key value 分布式锁 1:表示设置成功 0:表示设置失败 业务处理完要释放
计数器
inCR 每次执行完+1
web集群session共享
spring session +redis实现session共享
分布式系统全局序号列
incrby orderId 1000
hash的用法
hset key field value 存储一个哈希表的key value
优点
1.比同类数据归类整合处理
2.相比string操作消耗内存与cpu更小
3.相比string更节省空间
缺点
1.过期的功能不能使用在在field上,只能用在key上面
2.redis集群架构下适合大规模使用
hset key field value user id:name nameValue 单个
hmset key field value user id:name nameValue 多个
hincrby key fileld increment 对某个field递增
hlen key 获取某个key下面的总数量(field的数量)
hdel key field user id:name 删除field
hgetall key 获取key下面的所有的field
List的用法
Lpush key value[value,value] L是指往列表的左边放值
Rpush key value[value,value] L是指往列表的右边放值
LPOP key L从左边出队
RPOP key R从右边出队
BLPOP key[key...] timeout 从列表的左边弹出一个元素,若列表中没有,则阻塞等待,timeout=0,就会一直阻塞
BRPOP key[key...] timeout 从列表的右边弹出一个元素,若列表中没有,则阻塞等待,timeout=0,就会一直阻塞
LRANFE key start stop 获取key中指定区间的元素
常用的数据结构
stack(栈) LPUSH+LPOP FILO
query(队列) LPUSH+RPOP
BlockingMQ(阻塞队列) LPUSH+BRPOP
set 用法
SADD key member [member...] 往集合key中放元素,元素存在则忽略,若key不存在则新建
SREM key member [member...] 从集合中删除元素
SMEMBERS key 获取集合中key的所有的元素
SCARD key 获取集合中key的元素个数
SISMEMBER key member 判断member元素是否在于集合key中
SRANDMEMBER key [count] 从集合key中选出count个元素,元素不从key中删除
STOP KEY [count] 从集合中选出count个元素,并删除
set 集合操作
SINTER set1 set2 set3 ->{c} 交集
SUNION set1 set2 set3 ->{a,b,c,d} 并集
SDIFF set1 set2 set3 ->{a} 以第一个元素为标准减去重复的元素
Zset常用操作(有序集合)
ZADD key score member [[score member]] 往有序集合key中批量添加带分值的元素
ZREM key member[member.....] 往有序集合key中删除元素
ZSCORE key member 返回有序集合中key中元素的member的分值
ZINCRBY key increment member 为key中元素member的分值加上increment
ZCARD key 返回有序集合key中的元素个数
ZRANGE key start stop [WITHSCORES] 正序获取有序集合key从start下标到stop下标元素
ZREVRANGE key start stop [WITHSCORES] 倒序获取有序集合key从start下标到stop下标元素
Zset集合操作
ZUNIONSTORE destkey numkeys key[key...]
ZINTERSTORE destkey numbeys key[key...]