Redis的基本命令
大约 3 分钟
1. 基本操作
1.1 登陆
# 进入命令行
redis-cli
# 登陆
auth xxxx(密码)
1.2 数据库相关
redis默认有16个数据库,默认使用的是第0个
# 切换数据库
select x
# 数据库大小
dbsize
# 清空当前数据库
flushdb
# 清空全部数据库
flushall
1.3 Key操作
# 设置
set key value
# 读取
get key
# 删除
del key
# 查看所有key
keys *
# 是否存在
exists key
# 过期时间
expire key time(s)
# 剩余时间
ttl key
# 移动到某数据库
move key xx
# 查看key的类型
type key
2. 五大数据类型
Redis的五大数据类型有List、Hash、Set、ZSet、String,除此之外还有三种特殊数据类型:
- geospatial(地理位置)
- hyperloglog(基数统计):网页的访问人数(一个人访问一个网站多次,但仅算一个人,传统使用Set),内存占用12kb,但有不到1%的误差
- bitmaps(位图):只有两种功能状态(用01记录),比如365天的打卡信息
2.1 String字符串
String类型的使用场景:
- 计数器
- 统计多单位数量:
id:xxx:star 0
表示id对应的star数 - 对象缓存
# 1. append: 追加, 如果key不存在就相当于set
# pptg -> pptgpptg
append pp pptg
# 2. strlen: 获取长度
# 8
strlen pp
# 3. incr: +1, decr: -1, 自增自减
# incrby key n, decrby key n, 自增自减n
set num 0 # 0
incr num # 1
incrby num 10 # 11
# 4. 区间(闭区间)
getrange key start end # 获取
setrange key start value # 覆盖指定位置开始的字符串, 原串位置不足会自动扩充
# n : 0123456789
setrange n 1 abc # 0abc456789
# 5. exists连用
# 设置过期时间
setex key value time
# 如果不存在则设置
setnx key value
# 6. 多操作
# 设置多组
mset key value [key value...]
# 获得多组
mget key [key...]
# msetnx是原子性操作,会同时失败/成功
msetnx key value [key value...]
2.2 List列表
所有的List命令都是L或R开头的, List可以用来实现队列、栈
List本质是一个链表,所以两侧操作效率高,中间操作效率低
# 1. 插入
# 一个或多个值插入到头部
lpush key value
# 一个或多个值插入到尾部
rpush key value
# 2. 推出
# 移除并返回头部值
lpop key
# 移除并返回尾部值
rpop key
# 移除n个指定值
lrem key n value
# 3. 获取区间(-1表示末尾)
lrange list 0 -1
# 4. 索引
# 查询
lindex key index
# 设置
lset key index value
# 5. 插入
linsert key before/after value value
2.3 Set集合
Set是无序不重复的
# 1. 添加
sadd key value
# 2. 获取
# 获取全部value
smembers key
# 是否存在
smembers key value
# 随机抽取n个
srandmember key [n]
# 3. 统计
# 元素个数
scard key
# 4. 删除
srem key value
# 随机删除
spop key
# 5. 移动
smove key value targetKey
除此之外,Set还支持集合操作,比如求差集、交集、并集
# 差集
sdiff set1 set2
# 交集
sinter set1 set2
# 并集
sunion set1 set2
2.4 Hash哈希表
用于存放变更的数据, 比如某id的user存他的信息
# 1. 设置
hset hash field value
# 2. 读取
# 按字段
hget hash field
# 全部
hgetall hash
# 3. 删除
# 按字段
hdel hash field
# 4. 存在
hexists hash field
2.5 Zset有序集合
# 1. 基本api相比set多了score, 比如
zadd key score value
# 2. 范围
zrangebyscore key min max
# 3. 统计个数
zcard key