Redis
redis.conf
相关
配置密码
配置 requirepass <password>
持久化
-
RDB
配置
save <seconds> <changes>
满足
间隔一定时间改变的键值个数
,就保存快照# 以下几种情况,将会保存快照 ## after 900 sec (15 min) if at least 1 key changed ## after 300 sec (5 min) if at least 10 keys changed ## after 60 sec if at least 10000 keys changed save 900 1 save 300 10 save 60 10000
-
AOF
配置
appendonly yes
异步保存失败时停止写入
配置 stop-writes-on-bgsave-error yes
常用命令
启动redis
## 使用conf文件
redis-server redis.conf
## 不使用conf文件
redis-server
查看帮助
redis-cli --help
命令行连接redis
redis-cli -h <hostname> -p <port> -a <password>
## 连接本地(默认)端口为6379(默认),不需要密码(默认)
redis-cli
基础数据类型
字符串string,哈希hash,列表list,集合set,有序集合zset
CRUD
-
查看所有key
keys *
- 字符串string
## 添加foo=bar键值对 127.0.0.1:6379> set foo bar OK ## 添加foo=bar2键值对(key值相同,覆盖) 127.0.0.1:6379> set foo bar2 OK ## 获取foo 127.0.0.1:6379> get foo "bar2" ## 删除foo 127.0.0.1:6379> del foo (integer) 1
- 哈希hash
## 添加hashfoo的哈希,foo1=bar1,foo2=bar2键值对 127.0.0.1:6379> hmset hashfoo foo1 bar1 foo2 bar2 OK ## 添加hashfoo的哈希,foo1=bar2键值对(key值相同,覆盖) 127.0.0.1:6379> hmset hashfoo foo1 bar2 OK ## 查看hashfoo的哈希 127.0.0.1:6379> hgetall hashfoo 1) "foo1" 2) "bar2" 3) "foo2" 4) "bar2" ## 查看hashfoo的哈希foo1的值 127.0.0.1:6379> hget hashfoo foo1 "bar2" ## 查看hashfoo的哈希bar2的值 127.0.0.1:6379> hget hashfoo bar2 (nil) ## 删除hashfoo 127.0.0.1:6379> del hashfoo (integer) 1
- 列表list
## 添加listfoo的列表,左侧头部加入值bar1 127.0.0.1:6379> lpush listfoo bar1 (integer) 1 ## 添加listfoo的列表,左侧头部加入值bar2、bar3 127.0.0.1:6379> lpush listfoo bar2 bar3 (integer) 3 ## 添加listfoo的列表,右侧尾部加入值bar1(值相同,追加而不是覆盖) 127.0.0.1:6379> rpush listfoo bar1 (integer) 4 ## 查看listfoo的列表,下标0-3的值 127.0.0.1:6379> lrange listfoo 0 3 1) "bar3" 2) "bar2" 3) "bar1" 4) "bar1" ## 修改listfoo列表中下标为3(第4个)的值为nar 127.0.0.1:6379> lset listfoo 3 nar OK ## 取出listfoo左侧头部的值 127.0.0.1:6379> lpop listfoo "bar3" ## 取出listfoo右侧尾部的值 127.0.0.1:6379> rpop listfoo "nar" ## 获取listfoo列表的长度 127.0.0.1:6379> llen listfoo (integer) 2 ## 删除listfoo 127.0.0.1:6379> del listfoo (integer) 1
- 集合set
## 添加setfoo的set集合,加入值bar1 127.0.0.1:6379> sadd setfoo bar1 (integer) 1 ## 添加setfoo的set集合,加入值bar2 bar3 127.0.0.1:6379> sadd setfoo bar2 bar3 (integer) 2 ## 添加setfoo的set集合,加入值bar1(值相同,不添加) 127.0.0.1:6379> sadd setfoo bar1 (integer) 0 ## 查看setfoo的set集合 127.0.0.1:6379> smembers setfoo 1) "bar3" 2) "bar2" 3) "bar1" ## 移除setfoo的set集合的bar2 127.0.0.1:6379> srem setfoo bar2 (integer) 1 ## setfoo的set集合是否存在bar 127.0.0.1:6379> sismember setfoo bar2 (integer) 0 ## 查看setfoo的set集合的成员数 127.0.0.1:6379> scard setfoo (integer) 2 ## 删除setfoo的set集合 127.0.0.1:6379> del setfoo (integer) 1
- 有序集合zset
## 添加setfoo的zset有序集合,加入值分数1的bar1,分数2的bar2 127.0.0.1:6379> zadd zsetfoo 1 foo1 2 foo2 (integer) 2 ## 添加setfoo的zset有序集合,加入值分数5的bar1(值相同,只改动分数) 127.0.0.1:6379> zadd zsetfoo 5 foo1 (integer) 0 ## 添加setfoo的zset有序集合,加入值分数5的bar3(值不同,添加) 127.0.0.1:6379> zadd zsetfoo 5 foo3 (integer) 1 ## 查看setfoo的zset有序集合的个数 127.0.0.1:6379> zcard zsetfoo (integer) 3 ## 查看setfoo的zset有序集合的成员和分数 127.0.0.1:6379> zrange zsetfoo 0 2 withscores 1) "foo2" 2) "2" 3) "foo1" 4) "5" 5) "foo3" 6) "5" ## 移除setfoo的zset有序集合的foo1和foo2 127.0.0.1:6379> zrem zsetfoo foo1 foo2 (integer) 2 ## 查看setfoo的zset有序集合的成员 127.0.0.1:6379> zrange zsetfoo 0 2 1) "foo3" ## 删除setfoo的zset有序集合 127.0.0.1:6379> del zsetfoo (integer) 1
发布订阅
## 订阅者订阅频道channel_bala
127.0.0.1:6379> subscribe channel_bala
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel_bala"
3) (integer) 1
## 发布者发布频道channel_bala,消息wala
127.0.0.1:6379> publish channel_bala wala
(integer) 1
## 订阅者收到消息
1) "message"
2) "channel_bala"
3) "wala"
选择库
## 选择num号库,默认0
SELECT <num>
清空当前库
FLUSHDB
清空所有库
FLUSHALL
常见问题
MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk
异步保存失败。具体原因查看日志,初步分析可能是磁盘空间不足或者redis文件及目录权限不足导致,如果想忽略它,
redis.conf
配置 stop-writes-on-bgsave-error no