通用操作与基础配置修改
Chivas-Regal
# 配置文件与启动
# 基础配置调改
redis
存在一份配置文件可以修改运行时的状态
如果你是 ubuntu 系统那么它位于 /etc/redis/redis.conf
然后有两份常用的服务端软件包 redis-server
和客户端软件包 redis-cli
先看一下服务端软件包的执行方式
redis-server /etc/redis/redis.conf
1
这里意味着通过加载 redis.conf 的方式启动 redis-server
但是默认的配置文件运行起来后是这样
也就是以前台进程的方式执行,会随着 ^C
的信号结束进程
想要让服务端通过守护进程的方式执行,打开 redis.conf
找到这样一行
# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes
1
2
3
2
3
原本是 no
,把它切换为 yes
即可完成
再次执行可以看到这样的效果了
然后可以通过以下命令关闭server
sudo /etc/init.d/redis-server stop
1
maxclients 0
:同一时间最大客户端连接数timeout 300
:客户端限制等待最大时长include /path/xxx.conf
:配置继承,在 /path/xxx.conf 做一些公共配置
# 命令行设参启动
redis-server --<配置key> <配置value>
可以按不同的配置启动多台 redis,比如
redis-server --port 6379 --daemonize yes
redis-server --port 6380 --daemonize yes
1
2
2
这样就启动了两台 redis,同时在连接的时候采用
redis-cli [-p <port值>] [-h <ip地址>]
来连接不同的端口 redis
这里根据上面的两个进行连接
# cmd1
(base) snopzyz@snopzyzdeMacBook-Pro ~ % redis-cli -p 6379
127.0.0.1:6379>
1
2
3
2
3
# cmd2
(base) snopzyz@snopzyzdeMacBook-Pro ~ % redis-cli -p 6380
127.0.0.1:6380>
1
2
3
2
3
来尝试一下再连一个我们没有启动 redis 的端口
# cmd3
(base) snopzyz@snopzyzdeMacBook-Pro ~ % redis-cli -p 6381
Could not connect to Redis at 127.0.0.1:6381: Connection refused
not connected> exit
1
2
3
4
2
3
4
发现会连接失败
# 配置文件启动
先阅读一下他们给咱们的配置文件,把不用的信息删掉并另存为另一个文件
cat redis.conf | grep -v "#" | grep -v "^$" > redis-6379.conf
1
这里最基础版配置仅需关注五个信息
# 绑定本机 ip,且仅能通过 ipv6 回环地址访问
bind 127.0.0.1 -::1
# 绑定本机 ip 的端口号
port 6379
# 以守护进程模式启动
daemonize yes
# 日志文件名
logfile "6379.log"
# “日志文件、持久化文件 ...” 生成的地址
dir ./redis-log
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
这里启动的方式直接 redis-server <配置文件的路径>
即可
# redis-cli 系统命令
# 清屏
clear
1
# 帮助文档
如果什么都不知道想看一下最宽泛的帮助文档,直接
help
1
如果知道某个首关键字但是不知道怎么用,采用如下形式
help <查询的关键字>
1
根据上面的 help 我们也可以查询群组命令内容
help @<查询的群组名>
1
这里就是 string 下的命令
# 退出
exit
和 quit
都可以
# 通用命令
# 数据操作
# 基础相关
- 删除指定 key:
del key
- 获取 key 是否存在:
exists key
- 获取 key 的类型:
type key
- 匹配查询 key:
keys pattern
规则:*
匹配任意数量的任意符号?
匹配一个任意符号[]
匹配一个指定符号
- 改名:可以理解为先
del
然后再?set
- 硬性改名(已经有了话则覆盖):
rename key newkey
- 软性改名(已经有了话则失败):
renamenx key newkey
- 硬性改名(已经有了话则覆盖):
- 对 key 的内容排序且不动原数据:
sort
(仅支持list、set、sorted_set) - 其他通用操作:
help @generic
-- 设置每个类型都一个 key ,格式为 _<类型>
127.0.0.1:6379> set _string "hello world"
OK
127.0.0.1:6379> hset _hash field value
(integer) 1
127.0.0.1:6379> lpush _list snopzyz
(integer) 1
127.0.0.1:6379> sadd _set snopzyz
(integer) 1
127.0.0.1:6379> zadd _sset 1 snopzyz
(integer) 1
-- 看看存在性
127.0.0.1:6379> exists _set
(integer) 1
127.0.0.1:6379> exists _good_
(integer) 0
-- 看看它们都属于什么类型
127.0.0.1:6379> type _string
string
127.0.0.1:6379> type _sset
zset
127.0.0.1:6379> type _list
list
-- 强制改名
127.0.0.1:6379> rename _string _hash
OK
-- 不管什么类型 rename 都可以覆盖
127.0.0.1:6379> get _hash
"hello world"
-- 已有 _list ,改名失败
127.0.0.1:6379> renamenx _hash _list
(integer) 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
匹配:
keys *
匹配所有keys *sn*
匹配中间有sn
的 keykeys ?s
匹配一个任意符号一个s
组成的 keykeys s[abc]nopzyz
可以匹配sanopzyz
、sbnopzyz
、scnopzyz
# 时效性相关
- 设置有效期:
- 按持续时间(秒):
expire key seconds
- 按持续时间(毫秒):
pexpire key milliseconds
- 按时间戳(秒):
expireat key timestamp
- 按时间戳(毫秒)
pexpireat key milliseconds-timestamp
- 按持续时间(秒):
- 获取有效时间:不存在返回 -2,永久返回 -1,否则返回有效时长
ttl key
pttl key
- 切换为永久性:
persist key
-- name = "snopzyz"
127.0.0.1:6379> set name snopzyz
OK
-- name 持续时间 30 秒
127.0.0.1:6379> expire name 30
(integer) 1
-- 第 12 秒查询剩 18 秒
127.0.0.1:6379> ttl name
(integer) 18
-- 中间查询一下
127.0.0.1:6379> get name
"snopzyz"
-- 第 23 秒查询剩 7 秒
127.0.0.1:6379> ttl name
(integer) 7
-- 第 33 秒查询,不存在,返回 -2
127.0.0.1:6379> ttl name
(integer) -2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 数据库操作
redis 初始给出 16 个数据库编号为 ,在同一片空间下,没有大小之分,起始使用 号数据库
- 切换数据库:
select index
- 测试连通:
ping
(连通了话返回PONG
) - 将数据移动到另一个数据库:
move key db
数据库的msg
移动到 数据库,必须保证 中有msg
且 中没有msg
,否则失败 - 数据清除:
- 获取当前数据库下 key 的数量:
dbsize
- 清除当前数据库:
flushdb
- 清除所有数据库:
flushall
- 获取当前数据库下 key 的数量:
-- 0号db有 name,user,pass
127.0.0.1:6379> set name snopzyz
OK
127.0.0.1:6379> set user 001
OK
127.0.0.1:6379> set pass 123456
OK
127.0.0.1:6379> keys *
1) "pass"
2) "name"
3) "user"
-- 移动 db0.user 到 db1.user
127.0.0.1:6379> move user 1
(integer) 1
-- db0 有 pass,name
127.0.0.1:6379> keys *
1) "pass"
2) "name"
127.0.0.1:6379> select 1
OK
-- db1 有 user
127.0.0.1:6379[1]> keys *
1) "user"
-- 清空 db1
127.0.0.1:6379[1]> flushdb
OK
-- 什么都没了
127.0.0.1:6379[1]> keys *
(empty array)
127.0.0.1:6379[1]> select 0
OK
-- db0 还有之前的
127.0.0.1:6379> keys *
1) "pass"
2) "name"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37