Redis基础篇(二)Redis常见命令
redis命令
·
主要内容:
- Redis数据结构
- Redis通用命令
- String类型
- Hash类型
- List类型
- Set类型
- SortedSet类型
(一)Redis数据结构
Redis自身是一个Map,采用key:value的形式存储。
数据类型指的是存储的数据的类型,也就是value的类型;key一般是String类型,value类型如下:
(二)Redis通用命令
- 查询符合条件的所有key
KEYS pattern # 示例: keys b* - -查询以b开头的key
* 匹配任意数量的任意字符
? 匹配一个任意字符
[] 匹配一个指定字符
- 删除一个指定的key
DEL key
- key是否存在
EXISTS key
- key类型
type key
- 设置过期时间
EXPIRE key seconds # 示例: expire age 10
- 查询key过期剩余时间
TTL key # -1永久有效 -2已删除
- 清空数据
DBSIZE 返回当前数据里面keys的数量
FLUSHDB 清空当前数据库里面的所有数据
FLUSHALL 清空所有数据库里面的所有数据
- 帮助性命令
help 命令名称
help @组名
- 退出命令
quit
exit
(三)string类型
一个存储空间存储一个数据。通常使用字符串,如果字符串以整形的形式存入,可作为数字进行操作。
(1)基本操作
命令:
- 添加/修改数据 :set key vlaue
- 获取数据 :get key
- 添加/修改多个数据 :mset key1 value1 key2 value2 …
- 获取多个数据 :mget key1 key2 …
- 将给定 key 的值设为 value ,并返回 key 的旧值(old value): getset key value
- 追加信息(如果原始数据存在就追加,否则新建):append key value
- 添加键值对,前提这个key不存在,否则不执行:setnx name xxx
- 获取字符串长度(个数):strlen key
- 返回 key 中的子字符: getrange key start end
- 删除数据 :del key
示例:
说明:set 和mset选择
具体使用set 还是mset根据实际情况分析:比如一亿条数据,如果使用mset,会进程阻塞,一直等这个操作,拆分100万一条,份100次发送。如果只有5条数据,就用mset,节省时间。
(2)拓展操作
-
设置数值数据增加
incr key 默认加1
incrby key value
incrbyfloat key value -
设置数值数据减少
decr key 默认减1
decrby key value -
设置数据具有指定的生命周期
setex key seconds vlaue
psetex key milliseconds value
key的设置约定:
项目名:业务名:类型:id
(四)hash类型
hash存储结构优化: 如果field数量较少,存储结构优化为类数组结构;如果field数量较多,存储结构使用HashMap结构。
(1)基本操作
命令
- 添加/修改数据 :hset key field vlaue
- 获取数据 :①hget key field ----- ②hgetall key
- 添加/修改多个数据 :hmset key field1 value1 field2 value2 …
- 获取多个数据 :hmget key field1 field2 …
- 获取哈希表中字段的数量:hlen key
- 删除数据 :hdel key field
(2)拓展操作
- 获取哈希表中是否存在指定的字段 : hexists key filed
- 获取哈希表中所有的字段名或字段值:① hkeys key ----- ② hvals key
- 为哈希表 key 中的指定字段的整数值加上增量 increment : hincrby key field increment
- 为哈希表 key 中的指定字段的浮点数值加上增量 increment : hincrbyfloat key field increment
- 添加一个hash类型的key的field值,前提field不存在,否则不执行:hsetnx
(五)List操作
与java中的LinkedList类似,可以看做是一个双向链表结构,既支持正向检索也可以反向检索。
特征:
- 有序
- 元素可以重复
- 插入和删除快
- 查询速度一般
(1)操作
- 新增或修改
将一个或多个值插入到列表左侧: lpush key value1 value2…
将一个或多个值插入到列表右侧: rpush key value1 value2… - 获取数据
获取列表指定范围内的元素:lrange key start end
通过索引获取列表中的元素: lindex key index
获取列表长度: llen key - 移除
移出并获取列表的第一个元素: lpop key
移除列表的最后一个元素: rpop key - 规定时间内移除
blpop key1 [key2] timeout
brpop key1 [key2] timeout - 拓展
移除列表元素:lrem key count value
将一个值插入到已存在的列表头部: lpushx key value1
(2)注意事项
(六)Set操作
特性:
- 无序
- 元素不可重复
- 查找快
- 支持交集、并集、差集等功能
(1)操作
- 添加数据
sadd key member1 [member2]… - 查看数据
smembers key - 删除数据
srem key member1 [member2]… - 获取数据总量
scard key - 判断集合中是否包含该数据
sismember key member - 随机获取集合指定数量的数据
srandmember key count - 随机获取集合中的一个元素并移除
spop key [count] - 两个集合的交集、并集、差集
sinter key1 key2… 交集
sunion key1 key2… 并集
sdiff key1 key2… 差集 - 两个集合的交集、并集、差集,并存储到指定集合中
sinterstore destination key1 key2… 交集
sunionstore destination key1 key2… 并集
sdiffstore destination key1 key2… 差集 - 将指定数据从原始集合中移动到目标集合中
smove source destination
(2)注意事项
(七) Sorted_set操作
底层实现是一个跳表SkipList加hash表。
特性:
- 可排序
- 元素不重复
- 查询速度快
(1)操作
- 添加数据
zadd key score1 member1 [score2 member2]...
- 删除数据
zrem key member1 [member2]...
- 获取指定元素的score和排名
zscore key member #score
zrank key member #排名
- 获取元素个数
zcard key # 获取所有元素个数
zcount key min max #统计score范围内的元素个数
- 获取指定范围内的元素
zrange key start stop # 按照score排序后,获取指定排名范围内的元素
zrangebyscore key start stop # 按照score排序后,获取指定score范围内的元素
- 两个集合的交集、并集、差集
zinter key1 key2... 交集
zunion key1 key2... 并集
zdiff key1 key2... 差集
- 两个集合的交集、并集、差集,并存储到指定集合中
zinterstore destination keys key1 key2... 交集
zunionstore destination keys key1 key2... 并集
zdiffstore destination key1 key2... 差集
- 自增
zincrby key increment member
(2)注意事项
降序则在命令的z后面加rev即可,如:zrevrange key start stop
(六)综合案例
更多推荐
已为社区贡献4条内容
所有评论(0)