Redis服务常用命令

一、基本命令

复制代码
1.启动redis服务
在redis的src目录下执行命令:
./redis-server

2.启动redis客户端实例
在redis的src目录下执行命令:
./redis-cli

3.连接远程redis服务器:
redis-cli -h host -p port -a password

4.设置key-value
set key value

5.获取值
get key

6.删除
del key

7.判断key是否存在
exists key

8.设置10秒过期
expire key 10

9.设置10毫秒过期
pexpire key 10

10.删除过期时间
persist key

11.切换数据库
redis有16个数据库(DB 0~DB 15),默认使用0号数据库
select index(index表示数据库编号)

12.清空当前选中的数据库
flushdb

13.清空所有数据库
flushall

14.查看当前数据库的所有key
keys *
keys *address*

15.查看字段类型
type key

16.检测连接是否存活
ping 

17.在命令行打印一些内容
echo

18.退出客户端
quit、exit

19. 退出服务器端
shutdown

20.返回redis相关信息
info

21. 实时传递接收的请求
config get dir/*

22.显示慢查询
showlog

23. 查看当前数据库大小
dbsize

24.不同数据库之间数据是不能互通的,move移动键到指定数据库
move key n

25. 杀掉所有redis服务
killall redis-server
killall redis-sentinel

26.修改key名称
RENAME oldkey newkey

二、String

复制代码
set name ljh    --设置值
get name    --获取值
getrange name 0 -1        --截取字符串,0对应start,1对应end
setrange key index value  --从index开始替换value
getset name new_ljh       --设置值,返回旧值
mset key1 value1 key2 value2   --批量设置
mget key1 key2            --批量获取
setnx key value           --不存在就插入(not exists)
setex key time value      --过期时间(expire)
incr age        --执行+1
incrby age 10   --执行+10
decr age        --执行-1
decrby age 10   --执行-10
incrbyfloat     --增减浮点数
append          --追加
strlen          --长度

三、hash

复制代码
hset myhash name ljh      --添加一个键值对
hget myhash name          --取出值
hmset myhash name ljh age 20 note "i am notes"      --批量键值对
hmget myhash name age note   
hgetall myhash               --获取所有的键值对
hexists myhash name          --是否存在
hsetnx myhash score 100      --不存在的话创建,存在的话修改
hincrby myhash id 2          --增加2
hdel myhash name             --删除
hkeys myhash                 --只取key
hvals myhash                 --只取value
hlen myhash                  --长度

四、list

复制代码
lpush mylist a b c  --左插入
rpush mylist x y z  --右插入
lrange mylist 0 -1  --数据集合
lpop mylist  --弹出元素
rpop mylist  --弹出元素
llen mylist  --长度
lrem mylist count value  --根据值来删除(count表示要删除多少个值为value的元素)
lindex mylist 2          --指定索引的值
lset mylist 2 n          --索引设值
ltrim mylist 1 2         --截取指定的元素集合
linsert mylist before 1 value   --在值为1前面插入value值
linsert mylist after 1 value    --在值为1的后面插入value值
rpoplpush list list2     --将list的最后一个元素移到list2中

五、set

复制代码
sadd myset e          --添加一个元素
smembers myset        --数据集合
srem myset e          --删除
sismember myset e --判断元素是否在集合中
scard key_name       --set集合中元素个数
sdiff | sinter | sunion --操作:集合间运算:差集 | 交集 | 并集
srandmember          --随机获取集合中的元素
spop                 --从集合中弹出一个元素

六、zset

复制代码
zadd zset 1 one          --添加一个元素(1表示score,用作排序使用)
zadd zset 2 two            
zadd zset 3 three
zincrby zset 1 one              --分数+1
zscore zset two                 --获取分数
zrange zset 0 -1                --获取全部的值
zrange zset 0 -1 withscores     --获取全部值并附带分数
zrangebyscore zset 10 25 withscores --分数在某个范围的值
zrangebyscore zset 10 25 withscores limit 1 2 --分页
Zrevrangebyscore zset 10 25 withscores --指定范围的值从大到小排序
zcard zset  --元素数量
Zcount zset --获得指定分数范围内的元素个数
Zrem zset one two        --删除一个或多个元素
Zremrangebyrank zset 0 1  --按照排名范围删除元素
Zremrangebyscore zset 0 1 --按照分数范围删除元素

七、hyperLogLog

复制代码
pfadd mykey a b c d --向一个集合添加元素
pfmerge mykey3 mykey mykey2 --向合并mykey和mykey2中的元素到集合mykey3中,并且没有重复元素
pfcount mykey3 --查看mykey的基数(即重复元素只算一次)

八、bitmap

复制代码
setbit mybitmap 0 0    --设置第0位的值为0
getbit mybitmap 0    --获得第0位的值
bitcount mybitmap    --统计值为1的数量

九、 订阅与发布

复制代码
订阅频道:subscribe chat1
发布消息:publish chat1 "hell0 ni hao"
查看频道:pubsub channels
查看某个频道的订阅者数量: pubsub numsub chat1
退订指定频道: unsubscrible chat1   , punsubscribe java.*
订阅一组频道: psubscribe java.*

十、分析key的方法

复制代码
1.寻找bigKey,粗略的看下最大key
redis-cli自带的一个命令。对整个redis进行扫描,寻找较大的key,Key主要以string类型存在
redis-cli -h b.redis -p 1959 --bigkeys

2. redis的命令,可以查看某个key序列化后的长度
debug object key

3.redis rdb file的分析工具,可以根据rdb file生成内存报告

4.查看单个key
redis-memory-for-key -s b.redis -p 1959 myhash

十一、SCAN命令

复制代码
SCAN    --迭代当前选定的Redis数据库中的一组键
SSCAN    --迭代 Sets 类型的元素
HSCAN    --迭代 Hash 类型的字段及其相关值
ZSCAN    --迭代 Sorted Set 类型的元素及其相关分数
语法:SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]

scan 0
scan 0 match "user*" count 2 type string
sscan myset 0 match j*
hscan ranext:msgext 0

十二、Sentinel集群

复制代码
1.sentinel启动
./bin/redis-sentinel 16380.conf
./bin/redis-sentinel sen_16380.conf 

2.info命令
info Replication   #查看主从相关信息
INFO clients    #查看连接数

3.停止redis端口
redis-cli shutdown
redis-cli -p 6379 shutdown
相关推荐
2603_965148114 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
ltl4 小时前
RocksDB 经典故障排查:L0、compaction 与 write stall
数据库
xfhuangfu5 小时前
Oracle中建立到CDB和PDB的连接
数据库·oracle·rpc
小小龙学IT5 小时前
DuckDB 深度实战:用 C++ 在进程内跑一个「分析型数据库」
数据库·c++
NineData6 小时前
DTCC 2026 预告|NineData CEO& 创始人叶正盛:面向 AI Agent 的数据库 DevOps 与数据复制实践
数据库·人工智能·数据库开发·devops·ninedata·数据库技术·dtcc
J_bean6 小时前
MySQL 事务是否必须手动开启?
数据库·mysql·数据库事务·自动提交·手动提交
J_bean6 小时前
MySQL InnoDB 如何检测死锁、判定死锁、处理死锁
数据库·mysql·死锁·死锁检测·处理死锁·死锁判定
浪子明X7 小时前
从 MongoDB 文档到关系模型:构建可重跑、可对账的数据迁移流水线
数据库·mongodb·oracle
杜子不疼.7 小时前
国产数据库撑起固井软件自主化:金仓 × 中海油服「海恒 Cemsol」落地解析
数据库
隔窗听雨眠7 小时前
GBase 8s并发控制深度解析:封锁机制、隔离级别与死锁处理全攻略
服务器·数据库·oracle