一、redis中的常见数据结构
Redis共有5种常见数据结构,分别字符串(STRING)、列表(LIST)、集合(SET)、散列(HASH)、有序集合(ZSET)。
二、redis中字符串(String)介绍
String 类型是一个 k-v 键值对形式的数据类型,一个 key 对应一个 value。
使用场景:
- 计数器
- 统计多单位的数量(uid:122:follow 10)
- 粉丝数
- 对象缓存存储
- ...
三、String 常见命令
1.Redis 默认有16个数据库(0~15),默认使用第0个
可以使用
select进行切换

2.查看数据库大小
使用
dbsize查看数据库大小

3.查看所有的key(当前库)
使用
keys *

4.清除当前数据库
flushdb
5.清空所有数据库
flushall
6.判断key是否存在
existskey
7.移除key
movekey 1 // 1 表示移动到哪个数据库
delkey // 删除当前数据库的key(可以多个)

8.设置key的过期时间
expirekey 时间 // 单位时间为s
ttlkey // 查看剩余存活时间

9.查看当前key的类型
typekey
10.字符串追加(String)
appendkey appendValue
- 如果当前 key 不存在,作用相当于 set key
11.获取字符串长度(String)
strlenkey

12.字符串i++操作(可用于阅读量实现)(String)
incrkey

同理,i --
decrkey
incrbykey 步长
decrbykey 步长

13.字符串片段 Range (String)(Range:范围)
getrangekey [startIndex] [endIndex]
- 对应java里的substring(但是这里会endIndex是一个闭区间)
- 特例,endIndex = -1 时,表示从startIndex 到最后

14.字符串替换 (String)(Range:范围)
setrangekey index replaceString
- 对应java里的replace
- 注意,如果replaceString是一个字符串,那么会替换源字符串中index后replaceString长度的片段,结果如下

15.特殊set设置 (String)
setex(set with expire)
setexkey 时间 value // 设置值,带过期时间

setnx(set if not exist)
setnxkey value // 如果不存在,则设置

16.批量设置、批量获取(原子性操作) (String)
msetk1 v1 k2 v2 …
mgetk1 k2 …

- 特殊
msetnx批量设置(要么都成功,要么都失败)(原子性)
17.设置高阶 (String)
getsetkey value // 先get再set(如果不存在,先返回nil,在设置值;如果存在,就先返回原值,再设置新值)

18.重命名key
renamekey newName

四、List(列表)常见命令
使用场景:
- 栈(lpush、lpop)
- 队列(lpush、rpop)
- 消息队列
- 阻塞队列
- ....
1.从头部/尾部 插入 数据,以及数据 显示
lpushkey value // 从左边插入一个值
rpushkey value // 从右边插入一个值
lrangekey 0 -1 // 从下标 0 开始,-1 代表遍历完


2.从头部/尾部 移除 数据
lpopkey
rpopkey

3.获取 指定索引的值
lindexkey index

4.获取列表长度
llenkey

5.移除指定的值
lremkey count(移除的个数) element

6.列表修剪 trim
相当于 Java 中的 substring()
ltrimkey startIndex endIndex

7.也可以使用set
lsetkey index value // 将列表中 指定 index 的值替换为对应的 value
- 需要保证key和index都存在,否则报错

8.插入指定的值
linsertkey before|after pivot(那个值后) value

五、Set(集合)
集合中的值不能重复(无序)
1.添加成员到集合中,并查看所有成员
saddkey member
smemberskey

2.判定成员是否存在
sismemberkey member

3.查看集合长度(特别)
scardkey

4.移除指定的成员
sremkey member

5.获取集合中的随机成员
srandmemberkey [count]

6.随机移除成员
spopkey [count]

7.移动集合成员到其他集合
smovesource destination member(需要移动的成员)

8.数字集合类:
- 差集
sdiffkey1 ,key2 … - 交集(共同好友)
sinterkey1,key2 … - 并集
sunionkey1 ,key2 …

六、Hash(哈希)
key - Map or key - <k,v>,value 是一个 Map。
应用场景:用户信息保存,经常变动的信息,适合对象的存储
1.简单存储Map和获取Map
hsetkey field value
hmsetkey field value [k1 v1 [k2 v2 …]] // 批量添加一个 Hash 中的 key 和 value
hgetkey field


2.获取所有Map字段及值
hgetallkey

3.删除Map中的字段
hdelkey field

4.查看Map中某字段是否存在
hexistskey field

5.获取所有字段或者所有字段对应的值
hkeyskey // 此处的key是Map名
hvalskey

6.增量i++
hincrbykey field value

7.不存在,就添加成功
hsetnxkey field value // field 在map中不存在就添加这个值,否则不做改变

8.适合存储对象(hmset)




















