一、String类型
1.单值缓存
set key value
get key
2.对象缓存
set user:1 value(json格式的数据)
3.分布式锁
setnx product:1001 ture // 返回1代表获取锁成功
setnx product:1001 ture // 返回0代表获取锁失败
。。。。执行业务逻辑
del product:1001 //执行完毕释放锁
3.原子加减
incr key //将key中存储的数字值加1
decr key //将key中存储的数字减1
incrby key increment //将key中存储的数字值加increment
decr key decrement //将key中存储的数字减decrement
可以应用于计数器
4.分布式系统全局序列号
incrby orderid 100 // redis批量生成序列号提升性能
二、hash类型(key-file(key,value))
1.购物车实现
a.以用户id为key ,商品id为File,商品数量为value
b.购物车操作:
添加商品:->hset cart:1001 10088 1
增加商品数量: ->hincrby car:1001 10088 1
商品总数:->hlen cart:1001
删除商品:->hdel cart:1001 10088
获取购物车所有商品:hgettall cart:1001
三、list(列表)类型(相当于一个链表可以左边或者右边插入或取出元素)
1.list常用操作
LPUSH list one # 将一个值或者多个值,插入到列表头部 (左)
LRANGE list 0 -1 # 获取list中值
127 .0.0.1:6379> LRANGE list 0 1 # 通过区间获取具体的值! 1 ) "three" 2 ) "two"
2.redis-list在实际中的应用
a.可以利用(LPUSH,LPOP)实现栈的功能(先进后出)
b.可以作为微信朋友圈按照时间线展示的信息列表
3.set类型(无序不重复集合。抽随机)
a.set常用操作
sadd key member [member.....] //往集合key中存入元素,元素存在则忽略,若key不存在则新建
srem key member [member.....] //从集合key中删除元素member
smembers key // 获取集合key中所有元素
scard key //获取集合key中元素的个数
sismember key member // 判断元素member是否存在于集合key中
srandmember key[count] //从key中随机选出count个元素(元素不从key中删除)
spop key[count] //从key中随机选出count个元素(元素从key中删除)
b.set运算操作
sinter key [key....] // 交集运算
sinterstore destination key [key....] //将交集结果存入destination中
sunion key [key....] //并集运算
sunion destination key [key....] //将并集结果存入destination中
sdiff key [key....] //差集运算
sdiff destination key [key....] //将差集结果存入destination中
c.Set应用场景
1.微信小程序抽奖
1)电机参与抽奖加入集合
sadd key {userId}
2)查看参与抽奖的所有用户
smembers key
3)抽取count名获奖者
srandmember key[0] /spop key [count]
2.微信微博点赞,收藏,标签
1)点赞
sadd like:{消息Id} {用户id}
2)取消点赞
srem like:{消息Id} {用户id}
3)检查是否点过赞
sismeber like:{消息Id} {用户id}
4)获取用户点赞列表
smembers like:{消息Id}
5)获取点赞用户数
scard like:{消息Id}