当前位置: 首页 > news >正文

Redis常用命令

基于内存的数据库

字符串

Redis默认使用字符串存储数据的,并且用二进制存储,较为安全

SET key value增加值(key区分大小写)
GET key获取值
INCR key对应value加一(value是数字)
DECR key对应value减一(value是数字)
INCRBY key value1对应value加value1(value是数字)
DECRBY key value1对应value减value1(value是数字)
DEL key删除键
EXISTS name判断是否存在
KEYS *查看所有的键
KEYS *me查看以me结尾的键
FLUSHALL删除所有的键
clear清空命令行

要支持中文的话,需要在登录redis客户端时加入 --raw参数

redis-cli --raw
TTL key查看键的过期时间(输出-1表示未设置,-2过期了)
EXPIRE key 10设置还有10秒过期
SETEX key 5 value设置一个键,过期时间5秒
SETNX key value当不存在这个键,才设置这个值

列表

列表的起始位置的序号是0,元素间有顺序

LPUSH list_name value在list_name头部放入value
LRANGE list_name 0 -1查看列表中所有内容
LPUSH list_name value1 value2 ...

按顺序一次放入多个值

(后添加的数据在前面)

LPOP list_name

删除头部第一个元素

返回删除元素

LPOP list_name 2删除头部前两个元素
RPOP list_name

删除尾部第一个元素

返回删除元素

LLEN list_name返回列表元素个数
LTRIM list_name 1 3保留索引1到3之间的元素

集合SET

元素间没用顺序,且不重复

SADD set_name value1 value2

向集合中加入元素,返回1表示添加成功

返回0表示添加失败(重复添加相同元素)

SMEMBERS set_name查看集合中的所有元素
SISMEMBER set_name value判断元素是否在集合中,返回1是在,0不在
SREM set_name value删除元素,返回1表示成功,0失败
SINTER set1 set2 ......返回集合的交集
SUNION set1 set2 ......返回集合的并集
SDIFF set1 set2 ......返回第一个集合与别的集合差集

有序集合SortedSet

根据自定义的分数对集合内的元素进行升序的排序

ZADD set score1 key1 score2 key2 ......

向集合中添加元素,

返回添加的个数

ZRANGE set 0 -1查看所有元素
ZRANGE set 0 -1 WITHSCORES输出元素的同时输出分数
ZSCORE set key查看分数
ZRANK set key查看排名(0开始数)
ZREVRANK set key反转顺序后的排名
ZREM set key删除
ZINCRBY set score key增加某个成员分数
ZREMRANGEBYRANK set start stop按照顺序删除范围内的元素

哈希Hash

键映射到值,适合用来存储对象

HSET Hash_name key value添加元素
HGET Hash_name key获取值
HGETALL Hash_name获取所有的键值对
HDEL Hash_name key删除键值对
HEXISTS Hash_name key是否存在键,返回1表示存在,0表示不存在

HKEYS Hash_name

获取所有的键
HLEN Hash_name

获取长度

发布订阅模式

SUBSCRIBE channel订阅频道
PUBLISH channel content在频道上发布消息

但消息无法持久化,无法记录历史消息

消息队列Stream

XADD stream_name * key1 value1 key2 value2

向队列内添加多个键值对,*表示自动生成消息ID,如果自己指定ID,格式满足

数字-数字,第一个数字是时间戳,第二个数字是序列

XLEN stream_name消息队列长度
XRANGE stream_name - +显示所有的消息
XDEL stream_name id删除消息,返回1表示成功,0表示失败
XTRIM stream_name MAXLEN 0删除所有消息,返回删除个数
XREAD COUNT 2 BLOCK 1000 STREAMS stream_name 0读取两条消息,如果没有则阻塞1000毫秒,并且从第0个开始读取
XREAD COUNT 2 BLOCK 1000 STREAMS stream_name $读取两条消息,如果没有则阻塞1000毫秒,只读取当前时刻之后的消息
XGROUP CREATE stream_name group_name id创建了一个消费者组,id为其id
XINFO GROUPS stream_name查看消费者组的信息
XGROUP CREATECONSUMER stream_name group_name consumer_name向消费者组内添加消费者
XREADGROUP GROUP group_name consumer_name COUNT 2 BLOCK 3000 stream_name >消费者组内读取2条消息,没有则阻塞3000毫秒,>只读取从未被当前消费者组中任何消费者读取过的新消息

地理空间Geospatial

GEOADD name longitude1 latitude1 city_name1 longitude2 latitude2 city_name2 .....添加位置的经纬,返回1表示添加成功
GEOPOS name city_name获取经纬度
GEODIST city city_name1 city_name2计算位置间距离(米)
GEODIST city city_name1 city_name2 KM计算位置间距离(千米)
GEOSEARCH city FROMMEMBER city_name BYREDIUS 300KM返回city_name为中心300km内的城市

位图Bitmap

本质是string的扩展,只有0或1,类似与bool数组

SETBIT name 0 1在0的位置上设为1
SETBIT name 1 0在1的位置上设为0
GETBIT name 0获取位置0的值
SET name "\xF0"设置为11110000
BITCOUNT name统计有多少个1
BITPOS name 0第一个出现0的位置
BITPOS name 0 start end范围内第一个出现0的位置

位域

将很多小的整数存储在一个较大的位图中,高效使用内存

BITFIELD var set u8 #0 1设置了一个变量为8位无符号(u8),并且第一个位置(#0)设为1
BITFIELD var get u8 #0获取第0个值
BITFIELD var set u8 0 25从第0位开始使用8位设为u8,值为25

BITFIELD var set u32 #1 100

等价于

BITFIELD var set u32 32 100

从第32位起到63共32位设置为32位非负整数100

BITFIELD var get u32 #1

等价于

BITFIELD var get u32 32

读取从第32位起到63共32位设置为32位非负整数的值

事务

可以不用保证所有的事务都必须执行完,执行失败的命令不会影响别的命令

MULTI开启事务,开启后可以输入命令了,但不会立马执行
EXEC执行之前输入的命令,然后退出事务

持久化

主要有两种方式,分别是RDB和AOF

RDB是指在固定时间内将内存中的数据快照写入磁盘,是某个时间点上数据的完整副本,通过配置文件中的save参数配置

save 3600 13600秒内,只有有一次修改,就进行一次快照
save在客户端执行,直接进行快照

在执行快照的过程中redis不会执行别的命令,可以通过bgsave创建一个进程执行快照,主进程不受影响。

AOF(Append-Only File)追加文件,原理是在执行写入命令的时候不仅写入内存中,还会将命令写入一个追加的文件,这个就是AOF文件,当redis重启的时候会重新执行里面的命令,来在内存中重建整个数据,只需要在配置文件中设置如下

appendonly yes

主从复制

指将一个Redis服务器的数据自动同步到另一台,也叫主节点和从节点,一个主节点可以有多个从节点,一个从节点只有一个主节点,数据复制是单向的,只能主到从,一般主节点负责写,从节点负责读。

设置方式首先添加一个从节点配置文件redis-6380.conf(6380代表从节点的redis使用的端口号)

修改端口号

port 6380

指定主节点

replicaof 127.0.0.1 6379 #主节点的ip和redis的端口

在同一台电脑上运行从节点需要修改pidfile,dbfilename,否则不需要修改,一般加一个端口号在末尾。 我是在同一台电脑上执行,所以需要修改。

pidfile /var/run/redis_6380.pid dbfilename dump-6380.rdb #当执行save或bgsave命令时,就会把内存中的数据保存在这个文件中

运行从节点的redis

redis-server redis-6380.conf

启动从节点客户端

redis-cli -p 6380

查看从属信息,可以看到属于slave,和主节点信息

info replication #输出如下 127.0.0.1:6380> info replication # Replication role:slave master_host:127.0.0.1 master_port:6379 master_link_status:down master_last_io_seconds_ago:-1 master_sync_in_progress:0 slave_repl_offset:0 master_link_down_since_seconds:1779251915 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:6a4f3f436717ab34ef7822ef0cc4b8583c7931e6 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:0 second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0

哨兵模式

如果在刚刚的主从节点集群中主节点出现宕机,就需要把一个从节点升级为主节点,需要人工干预,为了解决这个问题提出了哨兵模式。

哨兵会以一个独立的进程运行在redis集群中,用来监控Redis集群中的各个节点是否运行正常,主要执行下面几个功能。

1,监控

通过不断的发送命令来检查redis节点是否正常

2,通知

如果某个节点出现异常,哨兵就会通过发布订阅模式来通知其他节点

3,自动故障转义

当主节点不能正常工作的时候,哨兵开始自动故障转义,将一个从节点升级为新的主节点,然后再将其他从节点指向新的主节点。

配置哨兵模式:

添加哨兵节点配置文件sentinel.conf,输入以下内容,mater表示主节点名称,后跟IP和端口号,1表示只需要1个哨兵节点同意就可以进行故障转移

sentinel monitor master 127.0.0.1 6379 1

启动哨兵模型

redis-sentinel sentinel.conf

哨兵本身是一个线程,也会可能出现关闭,所以在实际生成中会使用多个哨兵,并从中推选出一个领导者来监控其他哨兵,如果领导者关闭,会重新推选出新的领导者

http://www.jsqmd.com/news/860584/

相关文章:

  • 华为云云容器引擎CCE 2026-Q1优化升级,全面进化您的云原生体验!
  • ElevenLabs丹麦文语音合规性警报:GDPR+丹麦数据保护局2024新规下,语音缓存、日志与语音指纹处理的7项强制操作
  • 亲测新加坡家具物流优质公司分享
  • 编写跨部门沟通协作效率监测程序,统计沟通频次耗时,优化职场协作工作流程。
  • 如何学习Three.js
  • 【Qt】界面优化(三)盒子模型的介绍和使用,给按钮,复选框,单行输入框设置样式
  • [深度洞察]2026年制造业竞争情报智能化监控的核心发展趋势是什么?详解企业级全链路自动化闭环方案
  • 从“卖算力”到“卖Token”:换的不是“秤”,是“货”!
  • 论文降重卡关?Paperxie 用「双 buff 叠加」,把查重和 AIGC 率一起打通关
  • 2026年企业整合营销预算10-100万,哪五家整合营销公司值得选型? - GEO优化
  • 【ElevenLabs粤语语音实战指南】:20年AI语音工程师亲测的5大落地陷阱与3步合规接入法
  • Access to system table ‘mysql.innodb_index_stats‘ is rejected.
  • 终极指南:3分钟掌握HTML到Word完美转换,html-to-docx让你的文档格式零损失
  • OpenClaw.NET 兼容性目录指南(Compatibility Catalog)
  • AI 智能体开发平台及特点
  • Linux 文件 IO:缓冲区、重定向与一切皆文件
  • 小红书营销不止于种草!2026年五大小红书营销公司综合能力白皮书暨推荐榜单 - GEO优化
  • 安全IP哪家强|2026 五大主流厂商深度测评与选型指南
  • wingetAn unexpected error occurred while executing the command: 0x8a15005e解决方法
  • 观察不同时段调用taotoken聚合接口的响应速度差异
  • 洛谷-【图论2-3】最小生成树1
  • 山东大学软件学院项目实训个人进展6
  • 2026 年海南进出口公司注册代办哪家强?全岛服务商排行榜权威发布 - GrowthUME
  • * LangChain4j中的流式调用
  • 《2026浦东5家初高中学科辅导机构横向测评:我帮你把坑踩完了》 - GrowthUME
  • AI编程工具 Codex 入门教程,带你7分钟上手 Codex !
  • Cert-Manager 安装与配置文档
  • 2026年福州汽车贴膜合规资质权威测评:4家主流门店横向对比,附避坑指南与选型推荐 - GrowthUME
  • 巨亏47亿,市值5000亿:拆解智谱AI的定价逻辑
  • 2026杭州GEO优化公司权威评测:五大厂商横向对比,避坑选型必读 - qq150194