String 字符串
字符串是最基本的 Redis 数据类型, 它们通常用于缓存。
默认情况下,单个 Redis 字符串的最大大小为 512 MB。
set
在redis存储字符串
1 | set user phj233 |
ex
存储user:code 并从现在起 100 秒过期
1 | set user:code 777777 ex 3600 |
get
1 | get user |
incr
user:code 递增1
1 | incr user:code |
incrby
user:code 增加 指定值
1 | incrby user:code 10 |
List 列表
列表是一个由字符串组成的有序集合,可以在列表的两端推入或弹出元素,也可以根据索引获取或修改元素。
lpush
将一个或多个字符串插入到列表的左侧。
1 | lpush mylist "hello" |
rpush
将一个或多个字符串插入到列表的右侧。
1 | rpush mylist "world" |
lrange
获取列表中指定范围的元素。
1 | lrange mylist 0 1 |
llen
获取列表的长度
1 | llen mylist |
lpop
从列表的左侧弹出一个元素,并返回它。
1 | lpop mylist |
rpop
从列表的右侧弹出一个元素,并返回它。
1 | rpop mylist |
Hash 表
结构化为key和value的记录类型
hset
向hash表添加key value
1 | hset user username phj233 password 123456 |
hmset
设置多个哈希键值对
1 | hmset user age 18 gender "male" |
hget
获取hash表指定key的value
1 | hget user username |
hmget
在 Redis 中,hmget 命令用于获取哈希表中多个键的值。
1 | hmget user:info name email |
hgetall
获取指定表全部数据
1 | hgetall user |
hincrby
对指定key的value增加指定整数
Set 集合
Set是唯一字符串的无序集合
- 跟踪唯一项目(例如,跟踪访问给定博客文章的所有唯一 IP 地址)。
- 表示关系(例如,具有给定角色的所有用户的集合)。
- 执行常见的集合操作,例如交集、并集和差分。
Redis Set的最大大小为 2^32 - 1 (4,294,967,295) 个成员。
sadd
向集合添加元素:
储存用户:
1 | sadd user phj233 |
储存用户的code:
1 | sadd user:phj233:code 123456 |
example:
1 | sadd user:phj233:num 465789 |
smembers
获取集合中的所有元素
1 | smembers myset |
sismember
检查value是否存在集合中
1 | sismember user:phj233:code 123456 |
sinter
查询两个集合交集
1 | sinter user:phj233:code user:phj233:num |
scard
集合计数
1 | scard user:phj233:num |
srem
移出集合元素
1 | srem user phj233 |
Sorted Set 有序集合
有序集合是一个无序的字符串集合,每个元素关联一个分数,可以根据分数进行排序。
zadd
向有序集合添加一个或多个元素
1 | zadd myzset 1 "apple" |
zrange
获取有序集合中指定范围内的元素
1 | zadd myzset 2 "banana" |
zrevrange
获取有序集合中指定范围内的元素,按照分数从大到小排序
1 | zrevrange myzset 0 1 |
zcard
获取有序集合的元素数量
1 | zcard myzset |
zscore
获取有序集合中指定元素的分数
1 | zscore myzset "cherry" |
zrem
从有序集合中删除一个或多个元素
1 | zrem myzset "cherry" |
Bitmaps 位图
位图是一种紧凑的数据结构,用于存储二进制位的值,可以进行一些位运算操作。
setbit
设置位图中指定位置的值
1 | setbit mybitmap 0 1 |
getbit
获取位图中指定位置的值
1 | getbit mybitmap 0 |
bitcount
获取位图中值为 1 的二进制位的数量
1 | setbit mybitmap 1 1 |
bitop
对多个位图进行位运算操作
1 | setbit mybitmap2 0 1 |
HyperLogLog 基数统计
HyperLogLog 是一种概率性的数据结构,用于估计一个集合中不同元素的数量。HyperLogLog 以完美的精度换取高效的空间利用率。
pfadd
向 HyperLogLog 中添加一个或多个元素
1 | pfadd myloglog "apple" |
pfcount
获取 HyperLogLog 中估计的元素数量
1 | pfcount myloglog |
pfmerge
合并两个集合
1 | PFADD hll1 foo bar zap a |
Geo 地理空间
Geo 是一种用于存储地理空间信息的数据结构,可以对地理空间信息进行查询和计算。
geoadd
向 Geo 中添加一个或多个地理空间信息
1 | geoadd mygeo 116.48105 39.996794 "Beijing" |
geopos
获取指定地理空间信息的经纬度坐标
1 | geopos mygeo "Beijing" |
geodist
计算两个地理空间信息之间的距离
1 | geoadd mygeo 116.417524, 39.928216 "Peking University" |
georadius
获取指定范围内的地理空间信息
1 | georadius mygeo 116.45635 39.91803 10 km |
Stream 消息流
Stream 是一种消息流数据结构,用于存储消息并支持消费者组的消费。
xadd
向 Stream 中添加一条消息
1 | xadd mystream * name "phj233" age 18 |
xread
从 Stream 中读取消息
1 | xread COUNT 1 STREAMS mystream 0-0 |
xgroup
创建或管理消费者组
1 | xgroup CREATE mystream mygroup 0-0 |
xreadgroup
从 Stream 中以消费者组的方式读取消息
1 | xreadgroup GROUP mygroup myconsumer COUNT |
xack
确认消费者组已经成功消费了一条或多条消息
1 | xack mystream mygroup 1-0 |
xdel
从 Stream 中删除一条或多条消息
1 | xdel mystream 1-0 |
Bitfields
Bitfields 是 Redis 3.2 引入的新数据类型,它可以看作是对 Redis 字符串类型的扩展,支持对字符串中的某些位进行读写操作。
bitfield
对 Redis 字符串中的位进行读写操作
1 | bitfield mykey SET u4 0 15 GET u4 0 |
bitcount
统计 Redis 字符串中值为 1 的位数
1 | bitcount mykey |
bitop
对多个 Redis 字符串进行位运算,并将结果存储到新的 Redis 字符串中
1 | set key1 "101010" |
bitpos
查找 Redis 字符串中值为 1 的位的位置
1 | set mykey "\xff\xf0\x00" |