redis常见命令
1、启动redis服务,redis-server 通过哪个配置文件启动
1 | redis-server kconfig /redis .conf |
2、客户端连接
1 | redis-cli -p 6379 |
3、select
redis默认有16个数据库,相互切换用select,默认为第0个数据库,select 0
1 | select 1 |
4、keys *,查看redis中的存储的key
1 2 3 4 5 6 7 | 127.0.0.1:6379> keys * 1) "myhash" 2) "mylist" 3) "name" 4) "counter:__rand_int__" 5) "key:__rand_int__" 127.0.0.1:6379> |
5、flushdb和flushall清空当前表和清空所有
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 127.0.0.1:6379> keys * 1) "myhash" 2) "mylist" 3) "name" 4) "counter:__rand_int__" 5) "key:__rand_int__" 127.0.0.1:6379> keys * 1) "myhash" 2) "mylist" 3) "name" 4) "counter:__rand_int__" 5) "key:__rand_int__" 127.0.0.1:6379> flushdb OK 127.0.0.1:6379> keys * (empty array) 127.0.0.1:6379> <br><br>127.0.0.1:6379> flushall OK<br>清空所有表 |
6、dbsize查看db大小
127.0.0.1:6379> dbsize
(integer) 0
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> dbsize
(integer) 1
127.0.0.1:6379>
7、exists key判断该key是否存在
1 2 3 4 | 127.0.0.1:6379> exists name (integer) 1 127.0.0.1:6379> get name "zhangsan" |
8、move key db 删除该db的key对应的值,db为1代表当前数据库
1 2 3 4 | 127.0.0.1:6379> move name 1 (integer) 1 127.0.0.1:6379> keys * (empty array) |
9、expire name second 在second 秒后key为name的值过期
1 2 3 4 5 6 7 8 9 | 127.0.0.1:6379> set name wang OK 127.0.0.1:6379> get name "wang" 127.0.0.1:6379> expire name 5 (integer) 1 127.0.0.1:6379> get name (nil) 127.0.0.1:6379> |
10、ttl查看当前key的过期时间
1 2 3 4 5 | 127.0.0.1:6379> ttl name (integer) 6 127.0.0.1:6379> ttl name (integer) 2 127.0.0.1:6379> |
11、type key 查看key的数据类型
1 2 3 4 5 | 127.0.0.1:6379> set name zhangsan OK 127.0.0.1:6379> type name string 127.0.0.1:6379> |
1 | String类型常用方法 |
12、append 追加字符串
1 2 3 4 5 6 7 | 127.0.0.1:6379> get name "zhangsan" 127.0.0.1:6379> append name 3333 (integer) 12 127.0.0.1:6379> get name "zhangsan3333" 127.0.0.1:6379> |
13、strlen查看字符串的长度
1 2 3 4 5 | 127.0.0.1:6379> strlen name (integer) 12 127.0.0.1:6379> get name "zhangsan3333" 127.0.0.1:6379> |
14、incr自增1
1 2 3 4 5 6 7 8 9 10 | 127.0.0.1:6379> set views 0 OK 127.0.0.1:6379> incr views (integer) 1 127.0.0.1:6379> get views "1" 127.0.0.1:6379> incr views (integer) 2 127.0.0.1:6379> get views "2" |
15、decr自减1
1 2 3 4 5 6 | 127.0.0.1:6379> get views "3" 127.0.0.1:6379> decr views (integer) 2 127.0.0.1:6379> get views "2" |
16、decrby key step与incrby key step 减少增加,可设置步长,指定增量
1 2 3 4 5 6 7 8 9 10 | 127.0.0.1:6379> get views "2" 127.0.0.1:6379> incrby views 2 (integer) 4 127.0.0.1:6379> get views "4" 127.0.0.1:6379> decrby views 3 (integer) 1 127.0.0.1:6379> get views "1" |
17、getrange key start end 截取字符串(end为-1,代表结尾)
1 2 3 4 5 6 | 127.0.0.1:6379> get name "zhangsan3333" 127.0.0.1:6379> getrange name 3 5 "ngs" 127.0.0.1:6379> getrange name 3 8 "ngsan3" |
18、setrange key start value 指定位置替换指定的值
1 2 3 4 5 6 | 127.0.0.1:6379> get name "zhangsan3333" 127.0.0.1:6379> setrange name 2 KKKK (integer) 12 127.0.0.1:6379> get name "zhKKKKan3333" |
19、setex(set with expire) #设置过期时间 setnx(set if not exist) #不存在设置 (在分布式锁中常用)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 127.0.0.1:6379> setex key1 50 ceshi OK 127.0.0.1:6379> get key1 "ceshi" 127.0.0.1:6379> ttl key1 (integer) 39 127.0.0.1:6379> keys * 1) "views" 2) "key1" 3) "name" 127.0.0.1:6379> setnx key2 ceshi (integer) 1 127.0.0.1:6379> setnx key2 ceshis (integer) 0 127.0.0.1:6379> get key2 "ceshi" 127.0.0.1:6379> |
20、mset,mget批量设置和获取值
1 2 3 4 5 6 | 127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 OK 127.0.0.1:6379> mget k1 k2 k3 1) "v1" 2) "v2" 3) "v3" |
21、msetnx 为原子性操作,失败的话全部失败。
1 2 | 127.0.0.1:6379> msetnx k1 v1 k6 v6 k8 v8 (integer) 0 |
22、getset 先get后set #如果不存在,返回nil,如果存在,返回之前的值,并设置新的值
1 2 3 4 5 6 7 8 9 10 11 | 127.0.0.1:6379> get k1 "v1" 127.0.0.1:6379> get m2 (nil) 127.0.0.1:6379> getset m2 hello (nil) 127.0.0.1:6379> getset k1 java "v1" 127.0.0.1:6379> get k1 "java" 127.0.0.1:6379> |
1 | list型常用方法 |
23、lpush 将一个值或者多个值插入到列表头部
1 2 3 4 5 6 7 8 | 127.0.0.1:6379> lpush lists test (integer) 4 127.0.0.1:6379> lrange lists 0 -1 1) "test" 2) "three" 3) "two" 4) "one" 127.0.0.1:6379> |
24、lrange遍历list数组
1 2 3 4 5 6 7 8 | 127.0.0.1:6379> lrange lists 0 -1 #获取list中的所有值 1) "test" 2) "three" 3) "two" 4) "one" 127.0.0.1:6379> lrange lists 2 5 #通过区间获取具体的值 1) "two" 2) "one" |
25、rpush在列表的尾部插入值
1 2 3 4 5 6 7 8 9 10 11 12 13 | 127.0.0.1:6379> lrange lists 0 -1 1) "test" 2) "three" 3) "two" 4) "one" 127.0.0.1:6379> rpush lists end (integer) 5 127.0.0.1:6379> lrange lists 0 -1 1) "test" 2) "three" 3) "two" 4) "one" 5) "end" |
26、lpop rpop 移除列表的值
1 2 3 4 5 6 7 8 9 10 11 12 13 | 127.0.0.1:6379> lrange lists 0 -1 1) "test" 2) "three" 3) "two" 4) "one" 5) "end" 127.0.0.1:6379> lpop lists "test" 127.0.0.1:6379> lrange lists 0 -1 1) "three" 2) "two" 3) "one" 4) "end" |
27、lindex 获取下标值
1 2 3 4 5 6 7 | 127.0.0.1:6379> lrange lists 0 -1 1) "three" 2) "two" 3) "one" 4) "end" 127.0.0.1:6379> lindex lists 2 "one" |
28、llen获取数组的长度
1 2 | 127.0.0.1:6379> llen lists (integer) 4 |
29、lrem 移除指定的值,移除list集合中指定个数的value,精确匹配
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 127.0.0.1:6379> lrange lists 0 -1 1) "three" 2) "two" 3) "one" 4) "end" 127.0.0.1:6379> lpush lists one (integer) 5 127.0.0.1:6379> lrange lists 0 -1 1) "one" 2) "three" 3) "two" 4) "one" 5) "end" 127.0.0.1:6379> lrem lists 2 one (integer) 2 127.0.0.1:6379> lrange lists 0 -1 1) "three" 2) "two" 3) "end" 127.0.0.1:6379> lrem lists 2 two (integer) 1 127.0.0.1:6379> lrange lists 0 -1 1) "three" 2) "end" |
30、ltrim通过下标截取指定的长度
1 2 3 4 5 6 7 8 9 10 11 | 127.0.0.1:6379> lrange lists 0 -1 1) "two" 2) "one" 3) "three" 4) "end" 127.0.0.1:6379> ltrim lists 0 2 OK 127.0.0.1:6379> lrange lists 0 -1 1) "two" 2) "one" 3) "three" |
31、rpoplpush移除列表的最后一个元素,将他移动到新的列表中
1 2 3 4 5 6 7 8 9 10 11 | 127.0.0.1:6379> lrange lists 0 -1 1) "two" 2) "one" 3) "three" 127.0.0.1:6379> rpoplpush lists otherlists "three" 127.0.0.1:6379> lrange lists 0 -1 1) "two" 2) "one" 127.0.0.1:6379> lrange otherlists 0 -1 1) "three" |
32、lset将列表中指定下标替换为指定的值(更新)不存在下标报错,存在更新
1 2 3 4 5 6 7 8 9 10 | 127.0.0.1:6379> lrange lists 0 -1 1) "two" 2) "one" 127.0.0.1:6379> lset lists 0 test OK 127.0.0.1:6379> lrange lists 0 -1 1) "test" 2) "one" 127.0.0.1:6379> lset lists 3 hello (error) ERR index out of range |
33、linsert 将某个具体的value插入到列表某个元素之前或之后
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 127.0.0.1:6379> lrange lists 0 -1 1) "test" 2) "one" 127.0.0.1:6379> linsert lists before one adds (integer) 3 127.0.0.1:6379> lrange lists 0 -1 1) "test" 2) "adds" 3) "one" 127.0.0.1:6379> linsert lists after one addss (integer) 4 127.0.0.1:6379> lrange lists 0 -1 1) "test" 2) "adds" 3) "one" 4) "addss" 127.0.0.1:6379> |
1 | set 型常用方法 |
34、sadd 给set中添加元素
1 2 3 4 5 6 | 127.0.0.1:6379> clear 127.0.0.1:6379> sadd keys one (integer) 1 127.0.0.1:6379> sadd keys two (integer) 1 127.0.0.1:6379> sadd keys hello |
35、smembers 查看set中的元素
1 2 3 4 5 | 127.0.0.1:6379> smembers keys 1) "one" 2) "hello" 3) "two" 127.0.0.1:6379> |
36、sismember 查看set元素中是否存在该元素
1 2 3 4 5 6 7 8 9 | 127.0.0.1:6379> smembers keys 1) "one" 2) "hello" 3) "two" 127.0.0.1:6379> sismember keys one (integer) 1 127.0.0.1:6379> sismember keys test (integer) 0 127.0.0.1:6379> |
37、scard 获取set集合中元素的个数
1 2 | 127.0.0.1:6379> scard keys (integer) 3 |
38、srem 移除set中的指定元素
1 2 3 4 5 6 7 8 9 | 127.0.0.1:6379> smembers keys 1) "one" 2) "hello" 3) "two" 127.0.0.1:6379> srem keys one (integer) 1 127.0.0.1:6379> smembers keys 1) "hello" 2) "two" |
39、srandmember 随机获取set中的值
1 2 3 4 5 6 7 8 9 | 127.0.0.1:6379> srandmember keys "hello" 127.0.0.1:6379> srandmember keys "two" 127.0.0.1:6379> srandmember keys "two" 127.0.0.1:6379> srandmember keys 2 1) "hello" 2) "two" |
40、spop 随机删除元素
1 2 3 4 5 | 127.0.0.1:6379> spop keys "two" 127.0.0.1:6379> spop keys "hello" 127.0.0.1:6379> |
41、
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)