1.概述
这一小节,我们主要来研究一下redis的五大类型的基本使用,数据类型如下:
redis我们接下来看一看这八种类型的基本使用。我们可以在redis的官网查询这些命令:Commands | Docs,同时我们也可以用help 数据类型查看命令的帮助文档。
2. 常用命令的使用
可以用help generic查看一些基本命令的使用
2.1 查看redis中所有的key
KEYS pattern
比如:
KEYS user //查看key为user的数据
KEYS *user* //查看包含user的key
注:该命令会扫描redis里面所有的key,不建议在生产上使用。
2.2 删除指定的key
Del key1 key2 key3
2.3 判断某个key是否存在
EXISTS key
2.4 给key设置一个过期时间
EXPIRE key
2.5 查看key的过期时间
TTL key
2.5 更换库
select 库的编号
3. string类型
3.1 基本操作
3.1.1 增加一个1字符串
set key value
3.1.2 设置key以及超时时间
set key value ex 时间(单位秒)
3.1.3 不存在才能插入key
set key value nx
3.1.4 根据key获取字符串
get key
3.2 批量操作
3.2.1 更新多个key
mset key1 v1 key2 v2
3.2.2 获取多个key
mget key1 key2
3.3 数值操作
3.3.1 递增
incr key
3.3.2 递减
decr key
3.3.3 增加某个数值
incrby key 数值
3.3.4 减少一个数值
decrby key 数值
3.4 复合操作
3.4.1 获取值后再更新
getset key value
3.4.2 不存在才能更新
setnx key value
3.4.3 更新值和超时时间
setex key 时间 value
3.4.4 获取值后删除
getdel key
3.5 子字符串操作
3.5.1 获取key中字符串长度
strlen key
3.5.2 获取子字符串
getrange key 开始位置 结束位置
4. hash类型
4.1 基本操作
4.1.1 左侧依次插入多条元素
lpush key v1 v2
4.1.2 右侧插入多条元素
rpush key v1 v2
4.1.3 左侧弹出多个元素
lpop key 元素个数
4.1.4 右侧弹出多个元素
rpop key 元素个数
4.1.5 查看元素个数
llen key
4.1.6 查看list中的某个区间内的元素
lrange key 开始位置 结束位置
注意:lrange key 0 -1 表示查看list中所有数据 & 开始位置从0开始
4.1.7 根据索引获取某个元素
lindex key 索引
4.1.8 查找某个元素的位置
lpos 元素
4.2 阻塞队列
在获取元素的时候,会一直等待,知道有元素返回或者超时,才会被唤醒,其实就是阻塞队列。
4.2.1 左侧插入元素
blpush key v1 v2
4.2.2 右侧插入元素
brpush key v1 v2
4.2.3 左侧弹出元素(可以监听多个list)
blpop key1 key2 超时等待时间
4.2.4 右侧弹出元素(可以监听多个list)
brpop key1 key2 超超时等待时间
4.3 复合操作
4.3.1 弹出key1左侧元素并从左侧插入到key2
lpushlpop key1 key2
4.3.2 左侧弹出key1左侧元素并从右侧插入到key2
lpushrpop key1 key2
4.3.3 弹出key1右侧元素并从左侧插入到key2
rpushlpop key1 key2
4.3.4 弹出key1右侧元素并从右侧插入到key2
rpushrpop key1 key2
4.3.5 从key1某侧弹出多个元素并放入到key2
lmove key1 key2 元素从哪边弹出(left/right) 元素从哪边插入(left/right)
注意:该命令为高版本命令
5. hash类型
5.1 基本操作
5.1.1 设置hash的某个key的某个field的值
hset key field value
5.1.2 获取hash的某个key的某个field的值
hget key field
5.1.3 判断某个key中的某个field是否存在
hexists key field
5.1.4 如果某个key中的某个field不存在才能插入
hsetnx key field value
5.1.5 删除某个key的某个field
del key field
5.2 递增操作
hash里面也可以存储数值
5.2.1 增加整数
hincrby key 整数
5.2.2 增加小数
hincrbyfloat key 小数
5.3 批量操作
5.3.1 查看hash中的所有key和value
hgetall key
5.3.2 查看所有key
hkeys key
5.3.3 查看所有的value
hvals key
注意:上面三个命令不能再生产上面随便使用,会阻塞redis。
5.3.4 查看redis中部分数据
hscan key cursor
注意:hscan 会将一个hash拆成多份内容,一次返回其中一份,这样就不会阻塞redis
6. set类型
6.1 基本操作
6.1.1 添加多个元素到set
sadd key val1 val2
6.1.2 获取set中所有元素
smembers key
6.1.3 判断元素是否在set里
sismember key val
6.1.4 获取set元素个数
scard key
6.1.5 随机从set中获取一个元素
spop key
6.1.6 把一个元素从一个set挪到另一个set
smove key1 key2 val
6.1.7 从集合中删除多个元素
srem key val1 val2
6.2 集合操作
6.2.1 求两个集合交集
sinner key1 key2
6.2.2 求两个集合差集
sdiff key1 key2
6.2.3 求两个集合并集
sunion key1 key2
7. sorted set类型
sorted set相当于java中的hashset,只是它是按照score进行排序。
7.1 基本操作
7.1.1 添加元素
zadd key score1 val1 score2 val2
7.1.2 查询元素个数
zcard key
7.1.3 查询元素的score1到score2 范围内的个数
zcount key score1 score2
7.1.4 查询元素的score
zscore key
7.1.5 查询元素排在第几位
zrank key val1
7.1.6 增加元素的分数
zincrby key 增加的分数 val
7.1.7 弹出score最大的元素
zpopmax key
7.1.8 弹出score最小的元素
zpopmin key
7.1.9 打印score在某个范围内的元素
zrange key score1 score2 byscore withscores
7.1.10 查看某个元素的排名
zrank key val
7.2 集合操作
7.2.1 交集
zinter key1 key2
7.2.2 差集
zdiff key1 key2
7.2.3 并集
zunion key1 key2
8. bitmap类型
8.1 基本操作
8.1.1 设置某位的值
setbit key offset val
8.1.2 获取某位的值
getbit key offset
8.1.3 统计1的个数
bitcount key 开始位置 结束位置
8.1.4 位运算
bitop (or/and/xor/not) destkey key1 key2
8.1.5 查找第一个出现该位元素的位置
bitpos key 元素值 开始位置 结束位置
9. geo类型
9.1 基本操作
9.1.1 添加地理元素
GEOADD key longitude latitude member [longitude latitude member ...]
9.1.2 返回元素的经纬度
geopos key member1 member2
9.1.3 返回两点间的距离
GEODIST key member1 member2 [m|km|ft|mi]
10. HyperLogLog类型
hyperLogLog主要是用来统计一堆元素的基数的数据类型,基数就是这堆元素里面不重复的元素个数。
10.1 基本操作
10.1.1 添加元素
pfadd key val1 val2
10.1.2 统计基数个数
pfcount key
10.1.3 合并两个hyperLogLog
pfmerge destkey key1 key2
11. 总结
本文主要是介绍redis的五大数据类型和三中扩展类型的基本使用,无外乎增删改查再加上集合之间操作。