前言
jvm我们讲了两篇文章,为了不让大家学习疲劳,我们几个技术穿插着来讲,我们今天讲讲Redis
的各种命令,这篇会把大家日常需要用到的命令
全都列出来,满足你们的日常工作需求
。
redis五大数据类型
![](https://i-blog.csdnimg.cn/blog_migrate/021fa44c57ffb4c9453e2b63d117828f.png)
redis键(key)
常用命令
命令 | 注释 |
---|---|
keys * | 获取所有的key |
select 0(库角标) | 选择第几个库 |
move key 0(库角标) | 将当前的数据库key移动到某个数据库,目标库有,则不能移动 |
flush 0(库角标) | 清除指定库 |
randomkey | 获取随机key |
type key | key的类型 |
set key value | 设置key和value |
get key | 获取key的value |
mset key1 value1 key2 value2 | 批量设置key、value |
mget key1 key2 key3 | 批量获取value |
del key | 删除key |
exists key | 判断是否存在key |
expire key second(秒) | 给key设置过期时间 |
pexpire key millisecond (毫秒) | 给key设置过期时间 |
persist key | 删除过期时间,持久保存key |
String类型
简介
String是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
String类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
String类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M
存储结构类似:key:value
常用命令
命令 | 注释 |
---|---|
set key value | 设置值 |
get key | 获取值 |
getrange key start end | 获取指定范围的value |
getset key value | 设置新value,并返回旧value |
getbit key offset | 获取字符串中某个位置的字符 |
mget key1 key2 | 获取多个value |
setex key second(秒) value | 设置key、value,同时设置过期时间 |
setnx key value | key不存在时设置key |
setrange key offset value | 用新value替换老value部分字符,从offset开始替换 |
strlen key | 获取value长度 |
mset key1 value1 key2 value2 | 批量设置key、value |
msetnx key1 value1 key2 value2 | 批量设置,当且仅当所有要设置的key都不存在时 |
psetex key milliseconds(毫秒) value | 设置过期时间,单位毫秒 |
incr key | 如果value是数字,使用这个语法使数字自增1 |
incrby key increment | 给value增加指定的值increment |
decr key | 给value减去1 |
decrby key decrement | 给value减去指定的值decrement |
append key value | 将value追加到key原来的value尾部 |
List类型
简介
它是一个字符串链表,left、right都可以插入添加;
如果键不存在,创建新的链表;如果键已存在,新增内容;如果值全移除,对应的键也就消失了。
链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。
key
是列表的名称,value
是列表。
存储结构类似:key:[value1, value2, value3, value4]
常用命令
命令 | 注释 |
---|---|
blpop key timeout | 在timeout时间内,获取并移除列表的第一个元素 |
brpop key1 timeout | 在timeout时间内,获取并移除列表的最后一个元素 |
brpoplpush source destination timeout | 在timeout时间内,从source列表中取出一个值,放到destination列表中 |
lindex key index | 获取列表index位置的值 |
linsert key BEFORE | AFTER value1 value2 |
llen key | 返回列表的长度 |
lpop key | 获取并移除列表的第一个元素 |
lpush key value value2 | 将一个或多个value插入到列表的头部 |
lpushx key value | 当key已经存在的时候,向列表的头部插入value |
lrange key start end | 获取列表部分数据,从start到end范围 |
lrem key count value | count>0,从列表的头部开始算起,移除count个value相同的数据;count<0,从列表的尾部开始算起,移除count绝对值个value相同的数据;count=0,全部移除value相同的数据 |
lset key index value | 在列表index位置设置value |
ltrim key start end | 保留start到end内的数据,其余的全部删除 |
rpop key | 获取并移除列表最后一个元素 |
rpoplpush source destination | 移除source列表最后一个元素,并把该元素添加到destination列表的头部 |
RPUSH key value1 value2 | 将一个或多个value添加到列表的尾部 |
rpushx key value | 为已经存在的列表添加值 |
Hash类型
简介
hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
存储结构类似:key:{field1:value1, field2:value2, field3:value3}
如:HMSET keyName
name
"redis tutorial" description
"redis basic commands for caching"
常用命令
命令 | 注释 |
---|---|
hdel key field1 field2 | 删除key中一个或多个field及value |
hexists key field | 查看哈希表key中,指定的field字段是否存在 |
hget key field | 在key中查找filed字段的value值 |
hgetall key | 获取在哈希表中指定 key 的所有字段和值 |
hincrby key field increment | 为哈希表 key 中的指定字段的整数值加上增量increment |
hincrbyfloat key field increment | 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。 |
hkeys key | 获取所有哈希表中的字段 |
hlen key | 获取哈希表中字段的数量 |
hmget key field1 field2 | 获取所有指定字段的值 |
hmset key field1 value1 field2 value2 | 同时将多个 field-value对设置到哈希表 key 中 |
hset key field value | 将哈希表 key 中的字段 field 的值设为 value 。 |
hsetnx key field value | 只有在字段 field 不存在时,设置哈希表字段的值。 |
hvals key | 获取哈希表中所有值。 |
hscan key cursor [MATCH pattern] [COUNT count] | 迭代哈希表中的键值对。 |
set类型
简介
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
存储结构类似:key:("value1", "value2", "value3")
常用命令
命令 | 注释 |
---|---|
sadd key value1 value2 | 向集合添加一个或多个成员 |
scard key | 获取集合的成员数大小 |
sdiff key1 key2 key3 | 返回第一个集合与其他集合之间的差异。 |
sdiffstore destination key1 key2 | 返回给定所有集合的差集并存储在 destination 新key中 |
sinter key1 key2 | 返回给定所有集合的交集 |
sinterstore destination key1 key2 | 返回给定所有集合的交集并存储在 destination 新key中 |
sismember key value | 判断key的集合中是否存在value |
smembers key | 返回key集合中所有的value |
smove source destination value | 将 value 元素从 source的key 集合移动到 destination的key 集合中 |
spop key | 随机获取并移除key中的一个value |
srandmember key count | 随机返回集合中count个value |
srem key value1 value2 | 移除集合中一个或多个value |
sunion key1 key2 | 返回所有给定集合的并集 |
sunionstore destination key1 key2 | 所有给定集合的并集存储在 destination key集合中 |
SSCAN key cursor [MATCH pattern] [COUNT count] | 迭代集合中的元素 |
Zset(sorted set)类型
简介
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
存储结构类似:key:{score1:value1, score2:value2, score3:value3, }
常用命令
命令 | 注释 |
---|---|
zadd key score1 value1 score2 value2 | 向有序集合添加一个或多个成员,或者更新已存在成员的分数 |
zcard key | 获取有序集合的成员数 |
zcount key min max | 计算在有序集合中指定区间分数的成员数 |
zincrby key increment value | 有序集合中对指定成员的分数加上增量 increment |
zinterstore destination numkeys key [key ...] | 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中 |
zlexcount key min max | 在有序集合中计算指定字典区间内成员数量 |
zrange key start stop [WITHSCORES] | 通过索引区间返回有序集合指定区间内的成员 |
zrangebylex key min max [LIMIT offset count] | 通过字典区间返回有序集合的成员 |
zrangebyscore key min max [WITHSCORES] [LIMIT] | 通过分数返回有序集合指定区间内的成员 |
zrank key value | 返回有序集合中指定成员的索引 |
zrem key value [value ...] | 移除有序集合中的一个或多个成员 |
zremrangebylex key min max | 移除有序集合中给定的字典区间的所有成员 |
zremrangebyrank key start end | 移除有序集合中给定的排名区间的所有成员 |
zremrangebyscore key min max | 移除有序集合中给定的分数区间的所有成员 |
zrevrange key start stop [WITHSCORES] | 返回有序集中指定区间内的成员,通过索引,分数从高到低 |
zrevrangebyscore key max min [WITHSCORES] | 返回有序集中指定分数区间内的成员,分数从高到低排序 |
zrevrank key value | 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序 |
zscore key value | 返回有序集中,成员的分数值 |
zunionstore destination numkeys key [key ...] | 计算给定的一个或多个有序集的并集,并存储在新的 key 中 |
zscan key cursor [MATCH pattern] [COUNT count] | 迭代有序集合中的元素(包括元素成员和元素分值) |
IT 老哥
![](https://i-blog.csdnimg.cn/blog_migrate/83b4d32db95bc4eeb129bed55e8a2d45.jpeg)
一个在大厂做高级Java开发的程序猿
关注微信公众号:IT 老哥
回复:Java 全套教程,即可领取:Java 基础、Java web、JavaEE 全部的教程,包括 spring boot 等
回复:简历模板,即可获取 100 份精美简历
回复:Java 学习路线,即可获取最新最全的一份学习路线图
回复:Java 电子书,即可领取 13 本顶级程序员必读书籍