192.168.198.20:6379> config get port
1) "port"
2) "6379"
192.168.198.20:6379> config get loglevel
1) "loglevel"
2) "notice"
192.168.198.20:6379> config set loglevel debug
192.168.198.20:6379> config rewrite
192.168.198.20:6379> config set loglevel notice
192.168.198.20:6379> config rewrite
二、Redis服务器的配置文件扩展
1、Redis的配置文件中,可以使用 include指令来包含另一个配置文件。
将公共的配置放入到一个公共的配置文件中,然后通过子配置文件引入父配置,可以将文件中的内容配置按照模块分开。
注意:“include”选项不会被来自admin或Redis Sentinel的“CONFIG REWRITE”重写掉。如果多个文件对同选项作了设置。Redis总是使用最后一次的设置,
因此你最好把”include”放在文件的开始处,以避免在运行时被后面的文件重写。如果相反,你希望使用”include”来覆盖这些配置选项,最好把它放在文章的结尾。
1)我们把 loglevel 和 logfile 写到 redis_log.config 文件中:
[root@centos7 u_redis]# touch redis_log.conf
[root@centos7 u_redis]# touch redis.log
[root@centos7 u_redis]# cat redis_log.conf
loglevel debug
logfile "/usr/local/redis/redis.log"
[root@centos7 u_redis]# ll
总用量 68
drwxr-xr-x 2 u_redis g_redis 44 5月 13 10:17 redis
-rw-r--r-- 1 u_redis g_redis 61868 5月 13 10:27 redis.conf
-rw-r--r-- 1 root root 0 5月 13 10:41 redis.log
-rw-r--r-- 1 root root 52 5月 13 10:40 redis_log.conf
drwxr-xr-x 2 u_redis g_redis 28 5月 13 10:02 run
2)在 redis.config中末尾配置 include指令。
然后重启,ok
192.168.198.20:6379> config get loglevel
1) "loglevel"
2) "debug"
192.168.198.20:6379> config get logfile
1) "logfile"
2) "/usr/local/redis/redis.log"
三、Redis备份与恢复
参看配置使用的是 RDB还是AOF 持久化以及它们的文件名字,然后复制他们备份。下面以 AOF 持久化操作
1)复制备份数据到安全的地方,名字自定义
[root@centos7 u_redis]# cp ./redis/appendonly.aof ./
2)删除数据文件,重启查看,数据为空
[root@centos7 u_redis]# rm -rf ./redis/appendonly.aof
3)恢复备份数据,把备份的数据文件复制到原来的位置并设置正确的权限,注意文件名要和配置文件的一致,
[root@centos7 u_redis]# cp ./appendonly.aof ./redis/
[root@centos7 u_redis]# chown u_redis:g_redis ./redis/appendonly.aof
[root@centos7 u_redis]# ll ./redis/
总用量 8
-rw-r--r-- 1 u_redis g_redis 368 5月 13 11:01 appendonly.aof
4)重启查看,数据ok
192.168.198.20:6379> keys *
1) "k1"
2) "k2"
3) "kmax3"
四、单机版数据迁移
有时候可能会需要将一个redis服务器的数据,复制到另一个redis服务器上去,实现方式有很多。
1、通过主从复制来实现
启动两个主服务器a和b
在b的客户端上执行命令(b作为a的从服务器,自动同步):
> slaveof 192.168.198.10 6379 //a的ip地址和端口号
同步完成了以后:
> slaveof no one //恢复主服务器的身份
可以通过 info命令查看主从复制信息
2、通过上面的(三、Redis备份与恢复)实现
两个主服务器a和b,查看其持久化的方式,然后把数据文件复制过去就ok。
五、管理连接上来的客户端
1、info clients 查看客户端状态和指标
192.168.198.20:6379> info clients
# Clients
connected_clients:2
client_recent_max_input_buffer:2
client_recent_max_output_buffer:0
blocked_clients:0
clients : 已连接客户端信息,包含以下域:
- connected_clients : 已连接客户端的数量(不包括通过从属服务器连接的客户端)
- client_longest_output_list : 当前连接的客户端当中,最长的输出列表
- client_longest_input_buf : 当前连接的客户端当中,最大输入缓存
- blocked_clients : 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量
2、info stats 查看客户端指标更详细
192.168.198.20:6379> info stats
# Stats
total_connections_received:2
total_commands_processed:7
instantaneous_ops_per_sec:0
total_net_input_bytes:192
total_net_output_bytes:23330
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
expired_stale_perc:0.00
expired_time_cap_reached_count:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0
total_commands_processed
redis处理的命令数
instantaneous_ops_per_sec
redis内部实时的每秒执行的命令数
total_net_input_bytes
redis网络入口流量字节数
total_net_output_bytes
redis网络出口流量字节数
instantaneous_input_kbps
redis网络入口kps
instantaneous_output_kbps
redis网络出口kps
rejected_connections
拒绝的连接个数,redis连接个数达到maxclients限制,拒绝新连接的个数
sync_full
主从完全同步成功次数
sync_partial_ok
主从部分同步成功次数
sync_partial_err
主从部分同步失败次数
expired_keys
运行以来过期的key的数量
expired_stale_perc
过期的比率
expired_time_cap_reached_count
evicted_keys
运行以来剔除(超过了maxmemory后)的key的数量
keyspace_hits
在获取数据的时候,会判断key是否存在,如果存在keyspace_hits++,如果不存在keyspace_misses++
keyspace_misses
没命中次数
pubsub_channels
当前使用中的频道数量
pubsub_patterns
当前使用的模式的数量
latest_fork_usec
最近一次fork操作阻塞redis进程的耗时数,单位微秒
migrate_cached_sockets
是否已经缓存了到该地址的连接
slave_expires_tracked_keys
从实例到期key数量
active_defrag_hits
主动碎片整理命中次数
active_defrag_misses
主动碎片整理未命中次数
active_defrag_key_hits
主动碎片整理key命中次数
active_defrag_key_misses
主动碎片整理key未命中次数
3、client list 查看每个连接的详情
192.168.198.20:6379> client list
id=4 addr=192.168.198.172:60652 fd=9 name= age=295 idle=295 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=command
id=6 addr=192.168.198.172:60656 fd=8 name= age=7 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 obl=0 oll=0 omem=0 events=r cmd=client
- id:客户端连接的唯一标识,这个id是随着Redis的连接自增的,重启Redis后会重置为0
- addr : 客户端的地址和端口
- fd : socket的文件描述符,与lsof命令结果中的fd是同一个,
如果fd=-1代表当前客户端不是外部客户端,而是Redis内部的伪装客户端。
内核(kernel)利用文件描述符(file descriptor)来识别文件。
- name:客户端的名字
- age : 以秒计算的已连接时长
- idle : 以秒计算的空闲时长
- flags : 客户端 flag
- db : 该客户端正在使用的数据库 ID
- sub : 已订阅频道的数量
- psub : 已订阅模式的数量
- multi : 在事务中被执行的命令数量
- qbuf : 输入缓冲区的长度(字节为单位, 0 表示没有分配输入缓冲区)
- qbuf-free : 输入缓冲区剩余空间的长度(字节为单位, 0 表示没有剩余空间)
4、终止某客户端连接,可以使用:CLIENT KILL ip:port
从Redis 2.8.12开始,这个命令改为如下格式:
CLIENT KILL ADDR ip:port. 和旧版的三个参数时的行为完全一样。
CLIENT KILL ID client-id. 可以通过唯一ID字段杀死一个客户端,唯一ID可以通过Redis2.8.12的CLIENT LIST命令查询。
CLIENT KILL TYPE type, 这里的 type 可以是 normal, slave, pubsub。 这将关闭所有特殊类的客户端。
192.168.198.20:6379> client kill id 4
(integer) 1
192.168.198.20:6379> client list
id=6 addr=192.168.198.172:60656 fd=8 name= age=455 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 obl=0 oll=0 omem=0 events=r cmd=client
参考文章:
Redis系列-远程连接redis
Redis内存回收机制
redis info 详解
—— Stay Hungry. Stay Foolish. 求知若饥,虚心若愚。
Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用。
在编程时,比如使用Redis 的Java语言包,这些命令都有对应的方法。下面将Redis提供的命令做一总结。
官网命令列表:http://redis.io/commands (英文)
1、连接操作相关的命令
quit:关闭连接(connection)
auth:简单密...
Redis SAVE 命令用于创建当前数据库的备份
下面建立一个set集合,然后备份,删除集合中"if exists , i can backup"值,再恢复,当看到"ifexists , i can backup"值时,说明则说明备份和恢复都成功。
建立集合test_backup
127.0.0.1:6379> sadd test_backup "backup"
当我们不小心执行flushall【清楚所有库中所有的数据】,我们必须马上做的就是执行一天命令:
shutdown nosave【关闭服务器,并且不保存】
然后打开aof文件,找到是否有flushall或者flushdb命令,vim打开aof,去掉相关的flush的命令
然后重启服务器,redis会先找到aof文件导入,再执行rdb文件导入
注意:redis运行过程中,会占
redis是一个key-value的Nosql,我们能操作就只有String类型key以及各种类型value.但是一定要注意我们添加的一般都是字符串,只是会组织为特定数据结构.
set(key ,map,set) --> set(key ,1),set(key ,"2")
注意:要先启动redis服务端
对value为stri...
Redis提供了两种持久化选项,分别是RDB和AOF。
默认情况下60秒刷新到disk一次[save 60 10000 当有1w条keys数据被改变时],Redis的数据集保存在叫dump.rdb一个二进制文件,这种策略被称为快照。
也可以手动调用Save或BGSAVE命令的:
[code="python"]/usr/local/bin/redis-cli -h 127.0.0....
redis_home:redis安装路径:cd %redis_home%/src./redis-cli -h 127.0.0.1127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> keys *
1) "652d085ae54d4a1faca9db57f5a32e57"
2) "a13991c60d13485bb23b31...
开启现有
Redis 实例的 AOF 功能(如果实例已经启用 AOF 功能则忽略此步骤)。
#
redis-cli -h old_instance_ip -p old_instance_port config set appendonly yes
通过 AOF 文件将
数据导入到新的云
数据库
Redis 版实例 (假定生成的 AOF 文件名为 appendonly.aof)。
} else if ("h".equalsIgnoreCase(str)) {
return (hour - day * 24);
} else if ("m".equalsIgnoreCase(str)){
return (min - day * 24 * 60);
} else if ("s".equalsIgnoreCase(str)){
return sec;
}else {
return 0L;
[/code]
方法的最后应该return 这些数据才是对的
中国移动云MAS平台 HTTP(JAVA版) 接口发送普通短信
不羡不妒:
分布式系统和微服务简介
_Charge:
分布式系统和微服务简介
不正经的kimol君: