Redis 常用命令
张小三呀
共 17565字,需浏览 36分钟
· 2023-08-18
Redis:
string
存储单个数据,一个存储空间对应一个数据
操作返回结果提示:1成功,0失败
字符串最大存储:512M
字符数值计算范围(Java中的long的最大值):- ~9223372036854775807
key 命名方式建议:
表名:主键名:主键值:字段名
set key value
说明:
设置一个键和值
get key
说明:
获取指定键的值
del key
说明:
删除指定键
mset key1 value1 key2 value2 ...
说明:
设置多个键和值
mget key1 key2 ...
说明:
获取指定多个键的值
strlen key
说明:
获取指定键的值的长度
append key value
说明:
往指定的键中的值之后追加数据。键为未存在则新建键值对,存在则往指定的键中追加
返回:追加后的值的长度
incr key
说明:
将指定键的值加1
注意:
该值必须为能转成数字的字符,例如:1,2,3这种字符。
decr key
说明:
将指定键的值减1
注意:
该值必须为能转成数字的字符,例如:1,2,3这种字符。
incrby key increment
说明:
将指定键的值加上指定的整数increment,increment为负数时效果为减
注意:
该值必须为能转成整数的字符,例如:-1,2,3这种字符。
decrby key increment
说明:
将指定键的值减去指定的整数increment,increment为负整数时效果为加
注意:
该值必须为能转成整数的字符,例如:1,2,-3这种字符。
incrbyfloat key increment
说明:
将指定键的值加上指定的浮点数increment,increment为负数时效果为加
注意:
该值必须为能转成数字的字符,例如:1.2,2.0,-0.3这种字符。
setex key sceonds value
说明:
将指定键值设置过期时间(单位:秒),时间到后值被清空,键仍然存在。
注意:在未过期时重新设置该键的值,则该值不存在过期时间。
setex key millisceonds value
说明:
将指定键值设置过期时间(单位:毫秒),时间到后值被清空,键仍然存在。
注意:在未过期时重新设置该键的值,则该值不存在过期时间。
set和mset对比:
指令执行过程:
1.服务器发送指令到redis需要的时间为T1
2.redis处理指令时间为 T2
3.redis处理完毕返回服务器的时间为T3
例如:
同时执行三条指令(数据量越多越明显):
set时间:(T1+T2+T3)*3
mset时间:T1+T2+T3
hash P14
一个存储空间保存多个键值对数据,底层使用hash存储结构
hash类型value中只能存字符串
每个hash能存2的32次方-1个键值对
hset key field value
说明:
1.将指定的键中添加字段和字段对应的值
2.将指定的键中修改字段和字段对应的值
hget key field
说明:
获取指定的键中字段对应的值
hgetall key
说明:
获取指定的键中所有的字段和字段值
注意:键中的字段多时,会影响效率。
hdel key field1 [field2 field3]
说明:
删除指定的一个或多个键中的字段和字段值
hmset key field1 value1 field2 value2 ...
说明:
设置或修改指定键的一个或多个字段和字段值
hmget key field1 field2...
说明:
获取指定键的一个或多个字段对应的值
hlen key
说明:
获取指定键中的字段数量
hexists key field
说明:
判断指定的键中是否存在指定的字段
hkeys key
说明:
获取指定的键中的所有字段名
hvals key
说明:
获取指定的键中的所有字段对应的值
hincrby key field increment
说明:
将指定键中的字段对应的字段值加上指定的整数increment,increment为负数时效果为加
注意:
该值必须为能转成数字的字符,例如:1,2,-3这种字符。
hincrbyfloat key field increment
说明:
将指定键中的字段对应的字段值加上指定的浮点数increment,increment为负数时效果为加
注意:
该值必须为能转成数字的字符,例如:1.2,2.0,-0.3这种字符。
hsetnx key field value
说明:
在指定键中设置指定字段和字段值
注意:
若操作的字段已经存在于此键中,则操作失败,否则成功
list
存储多个数据,存储空间顺序进行区分,一个存储空间存多个数据,底层采用双线链表存储结构实现。
list保存的数据都是字符串,容量为2的32次方-1。
具有索引概念,通常以队列或栈的方式操作。
lpush key value1 [value2,value3,..]
说明:
向指定的键中添加数据
注意:
此方式定义的数据从左边进入
rpush key value1 [value2,value3,..]
说明:
向指定的键中添加数据
注意:
此方式定义的数据从右边进入
lrange key start stop
说明:
在指定键中查找值
注意:
start为开始下标(0开始);stop结束下标,负数为倒数第几个
lindex key index
说明:
获取指定键中的下标值
注意:
index为负数时表示倒数
llen key
说明:
在指定键中的值长度
lpop key
说明:
在指定键中取出值
注意:
左边出
rpop key
说明:
在指定键中取出值
注意:
右边出
blpop key [key2 ...] timeout
说明:
在指定时间内取出键中的值
注意:
左边出,此方式具有阻塞效果,可从多个列表中取值
brpop key [key2 ...] timeout
说明:
在指定时间内取出键中的值
注意:
右边出,此方式具有阻塞效果,可从多个列表中取值
lrem key count value
说明:
移除指定数据,可从中间移除 count:为移除个数 value移除的值
set
存储大象数据,提高查询速度。
存储结构与hash相同,仅存键,不存值,因此,存的数据不能重复,重复则覆盖。
不允许重复元素
sadd key member [member2,member3...]
说明:
添加指定的键值
smembers key
说明:
取出键中的值
srem key member [member2,member3...]
说明:
移除键中的值
scard key
说明:
获取键中的值的总数
sismember key member
说明:
判断指定的键中是否存在指定值
srandmember key [count]
说明:
随机取出集合中指定数量的数据,元数据不变
spop key
说明:
随机取出集合中指定数量的数据,并将取出的数据移出集合
sinter key1 [key2...]
说明:
获取指定键中的交集
sunion key1 [key2...]
说明:
获取指定键中的并集,去除重复
sdiff key1 [key2...]
说明:
获取指定键中的差集
sinterstore destination key1 [key2 ... ]
说明:
获取指定键中的交集存储到指定的集合中,destination为新集合名称
sunionstore destination key1 [key2 ... ]
说明:
获取指定键中的并集存储到指定的集合中,destination为新集合名称
sdiffstore destination key1 [key2 ... ]
说明:
获取指定键中的差集存储到指定的集合中,destination为新集合名称
smove source destination member
说明:
移动指定集合中的元素到指定目标集合中,source为原目标集合,destination移动到的目标集合,member移动的元素
sorted_set
在Set的存储结构上添加可排序的字段
score对正数的范围是:-900719925474099~900719925474099
score保存的数据也可以是double值,但有可能出现精度丢失
底层基于set结构,数据不能重复,重复则覆盖,保留最后一次修改的数据
zadd key score1 member1 [score2 member2 ...]
说明:
向指定的键中添加数据。 score1排序的字段 member1值
zrange key start stop [withscores]
说明:
正向获取指定的键中数据.
zrevrange key start stop [withscores]
说明:
反向获取指定的键中数据.
zrem key member [member ...]
说明:
删除数据
zrangebyscore key min max [withscores] [limit]
说明:
按条件顺序获取数据,limit与mysql的用法一致
zrevrangebyscore key min max [withscores]
说明:
按条件倒序获取数据
zremrangebyrank key start stop
说明:
按索引删除数据
zremrangebyscore key min max
说明:
按条件删除数据
zrank key member
说明:
获取数据顺序对应的索引(排名),从小到大
zrevrank key member
说明:
获取数据倒序对应的索引(排名),从大到小
zscore key member
说明:
对score排序值的获取
zincrby key increment member
说明:
对score排序值的修改 increment正数为添加,负数为减少 member为字段
通用命令:
time
说明:
redis提供的时间命令
del key
说明:
删除指定的key
exists key
说明:
判断key是否存在
type key
说明:
获取key的类型
expire key seconds
说明:
设置key的过期时间,单位秒
pexoire key milliseconds
说明:
设置key的过期时间,单位毫秒
expireat key timestamp
说明:
设置key的过期时间,时间戳
pexpireat key milliseconds-timestamp
说明:
设置key的过期时间,毫秒时间戳
ttl key
说明:
获取key的有效期
pttl key
说明:
获取key的有效期
persist key
说明:
将key设置成永久性
keys parttern
说明:
查询key
parttern 查询的规则
* 任意数量任意符号
?匹配一个任意符号
[] 匹配一个指定的符号
rename key newkey
说明:
更改key名称,重名则覆盖原key
renamenx key newkey
说明:
更改key名称,重名则失败
sort
说明:
对所有key进行排序
help @generic
说明:
查看其他通用操作
redis数据库
redis提供16个数据库 编号0-15
select index
说明:
切换数据库, index编号0-15
quit
说明:
退出
ping
说明:
测试redis-server服务器是否连通
echo message
说明:
打印信息
move key db
说明:
将键移动到其他数据库,移动对象必须存在
dbsize
说明:
查看当前操作数据库中的键的数量
flushdb
说明:
清除当前操作数据库的所有数据
flushall
说明:
清除所有数据库的所有数据
评论
Redis 是怎么从单体架构发展到分布式缓存的?
图解学习网站:https://xiaolincoding.comRedis 架构是如何一步一步发展到今天的样子的?2010 年 - 单体 RedisRedis 1.0 于 2010 年发布,当时的架构非常简单。它通常用作业务应用程序的缓存。不过,Redis 将数据存储在内存中。当我们重启 Redis
小林coding
10
得物面试:Redis 内存碎片是什么?如何清理?
JavaGuide官方网站:javaguide.cn这是一道不是特别高频但很重要的 Redis 面试题,属于 Redis 性能优化的范畴。Redis 内存碎片相关的问题在得物、美团、阿里、字节、携程等公司的后端面试中都曾出现过,还是建议认真准备一下。即使不是准备面试,日常开发也是能够用到的!什么是内
JavaGuide
0
吃透Redis系列:对过期数据挥刀问斩
欢迎关注微信公众号:互联网全栈架构号外:今天刷新公众号后台,竟然发现有了留言功能,这个功能可是盼望了好几年了,现在终于拥有了,真是喜出望外,欢迎大家留言讨论啊,感谢!在Redis中,我们可以设置key的过期时间,比如两个小时,那么在两个小时以后,这些key通过什么方式进行删除?另外,如果占用的内存达
互联网全栈架构
10
吃透Redis系列:高可用的哨兵模式
欢迎关注微信公众号:互联网全栈架构一哨兵模式介绍哨兵模式(Sentinel)是Redis提供的高可用解决方案,作为一个分布式系统,它包含了多个Sentinel节点和Redis节点,这些Sentinel节点会监控Redis节点的状态(通常为主从复制),如果发现master节点不可用时,会自动将其中一个
互联网全栈架构
10
Redis实用监控工具一览
v博客前言Redis已经成为web应用开发不可或缺的一个组成部分,在项目中的应用越来越广泛,这篇文章就来讲讲那些关于Redis监控的那点事。回到顶部vredis-benchmark1.1 简介第一个就介绍一下,Redis自带的性能检测工具r...
程序员面试吧
0
宕机了,Redis 如何避免数据丢失?
「万事开头难,视频号500粉直播需要你的助力!你的支持是我前进的动力!」 来源:juejin.cn/post/7193597571305046071 前言 如果有人问你:"你会把 Redis 用在什么业务场景下?" 我想你大概率会说:"我会把它当作缓...
JAVA乐园
0
可平替 Redis ,微软开源 Garnet 缓存
garnet 是什么 最近,微软正式开源了缓存存储系统 Garnet[1]。据微软官方介绍,Garnet 项目是从零开始采用 C# 构建的,注重性能(尤其是吞吐量中的线程可扩展性和更高比例的低延迟水平)。 Garnet 比 Redis 更优秀的...
JAVA架构日记
0
4 种策略让 MySQL 和 Redis 数据保持一致
点击关注公众号:互联网架构师,后台回复 2T获取2TB学习资源!上一篇:2T架构师学习资料干货分享大家好,我是互联网架构师!先阐明一下 MySQL 和 Redis 的关系:MySQL 是数据库,用来持久化数据,一定程度上保...
互联网架构师
0