1.nx 与 xxza
nx 表示 不存在的情况才能set成功,多用于新增,分布式锁
xx 表示 只有存在才能set更新 多用于更新
同时还有setnx 和 setex
setnx 与set key value nx 相同
setex则是直接设置超时时间
2.mget与mset 批量设置与批量获取
3.数字自增 incr decr incrby decrby
4.append 追加字符
5.字符串长度 注:一个中文长度为3
6.getset 返回原来的值并设立新的值
7.setrange 替换指定位置的字符
8.getrange 获取指定截取位置
9.关于String类型用途的思考
- 作为缓存层,减轻数据库的压力高性能,可以支撑起高并发,可以应用于分布式共享seesion 用于保存用户的登录的信息做一些限速控制,如短信通知等接口的需求
与String类型不同,
redis 中的String 的结构类型像是 Map
redis 中的hash数据结构 Map
1.hset
2.hget
3.hdel 删除某个hash字段
4.判断hash的长度
5.hmget 批量获取
6.hesists 判断某个filed是否存在
7.hkeys 获取某个key里所有的filed
8.hvals 可以查看某个可以所有的values。
9.如果想同时获取key和value 可以用hgetall,可以同时获取key和value
10.hincrby 增加filed的数字加以
11.关于hash类型的是考
hash的类型其实是Map
所以比较适合将一些对象存储
但是 序列化上相比String麻烦些,需要将hash中filed取出来才能反序列化
listlist 可以看成一个有序的数组,可对头尾都进行操作
因此我们可以把redis当作 队列,栈来使用,可以应用于多种场景
1.rpush lpush lrange
2.insert 可以在某个下标 前后插入新的内容
3.lpop rpop 左右弹出
4.lrem 定时删除
lrem key count 指定的value
根据count数量清除list中的count个指定value
count = 0 清除所有的指定value
count >0 从·左到右删除
count<0 从右到左删除
5.ltirm截取list
6.lset 修改特定位置的value
7.lindex 获取指定下标的值
8.llen 看长度
9.阻塞式获取 Brpop lrpop
当要取的list没有可pop的值时会陷入阻塞
A端
B端
第一次push list 后 ,会被已经在等待的A端直接提取,因此 第一次llen的长度为0
关于list的应用场景:
由于list的多变,可以模拟多种数据结构
队列:lpush + rpush
栈:lpush+lpop
有界队列: lpush+ltrim
消息队列:lpush+brpop
1.set 类型的增删
sadd:新增key
scard:查看key的个数
srem:移除指定的value
2.sismember 判断该value在set中是否存在
srangemember 返回任意一个value
spopmember 弹出任意个value
smembers 返回所有value
3.sunion 并集
sdiff 差集
sinter 交集
其中 sdiff 求差集 是求第一个key没有的
使用sinterstrore可以使得交集重新存入redis
虽然说叫zset,但是个人感觉数据结构上偏向map存储类型
不同的是 zset 可以根据value 实现排序,且规定value值必须是float
1.zadd --新增类型
zcard --计算数量
zrank --获取某个对象的排名 排名从低到高排
zrevrank 从高到低
zscore–获取某个对象的分数
2.zrem–删除某个value
zrange–显示诺干个value值
3.给某个value新增值
4.根据某范围查找value
5.zcount 返回指定分数范围成员个数
zremrangebyrank 按升序删除指定排名内的元
zremrangebyscore 删除指定分数范围的成员



