跳至主要內容

Redis的基本命令

pptg大约 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