一般推荐次新版的最后一个发行版。https://redis.io/download
先安装gcc,
yum install gcc
tar xzf redis-3.2.3.tar.gz??
cd redis-3.2.3
make
如果报zmalloc.h:50:31: 错误:jemalloc/jemalloc.h,则使用make MALLOC=libc
make install
或者指定安装目录:make?PREFIX=/usr/local/redis?install
cp redis.conf /etc/
通常安装redis后必做的第一件事是更改配置文件,让redis默认以守护进程的模式启动并设置密码:
vi /etc/redis.conf
将daemonize从no改为yes
requirepass aStrongStringPassword
proctect yes? # 禁止远程无密码访问
# bind 127.0.0.1? 注释掉支持远程访问
其他生产需要注意的重要配置参见redis配置注意事项。
# redis-server /etc/redis.conf
[root@localhost redis-3.2.4]# ps axu | grep redis
root 9711 0.0 0.0 136920 7556 ? Ssl 01:46 0:00 redis-server 127.0.0.1:6379
root 9715 0.0 0.0 112648 976 pts/0 S+ 01:46 0:00 grep --color=auto redis
[root@localhost redis-3.2.4]# redis-cli
127.0.0.1:6379> exit
127.0.0.1:6379> client list id=2 addr=127.0.0.1:38654 fd=5 name= age=197 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client 127.0.0.1:6379> info # Server redis_version:3.2.8 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:8ffb5d8f8beeb710 redis_mode:standalone os:Linux 2.6.32-431.23.3.el6.x86_64 x86_64 arch_bits:64 multiplexing_api:epoll gcc_version:4.4.7 process_id:18542 run_id:99f248a3c2cf7e0435489308dab0e4465262c592 tcp_port:6379 uptime_in_seconds:420 uptime_in_days:0 hz:10 lru_clock:13231573 executable:/root/redis-server config_file:/etc/redis.conf # Clients connected_clients:1 client_longest_output_list:0 client_biggest_input_buf:0 blocked_clients:0 # Memory used_memory:823008 used_memory_human:803.72K used_memory_rss:7794688 used_memory_rss_human:7.43M used_memory_peak:823008 used_memory_peak_human:803.72K total_system_memory:16726306816 total_system_memory_human:15.58G used_memory_lua:37888 used_memory_lua_human:37.00K maxmemory:0 maxmemory_human:0B maxmemory_policy:noeviction mem_fragmentation_ratio:9.47 mem_allocator:jemalloc-4.0.3 # Persistence loading:0 rdb_changes_since_last_save:0 rdb_bgsave_in_progress:0 rdb_last_save_time:1489626161 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:-1 rdb_current_bgsave_time_sec:-1 aof_enabled:0 aof_rewrite_in_progress:0 aof_rewrite_scheduled:0 aof_last_rewrite_time_sec:-1 aof_current_rewrite_time_sec:-1 aof_last_bgrewrite_status:ok aof_last_write_status:ok # Stats total_connections_received:1 total_commands_processed:4 instantaneous_ops_per_sec:0 total_net_input_bytes:134 total_net_output_bytes:6028863 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 evicted_keys:0 keyspace_hits:0 keyspace_misses:0 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:0 migrate_cached_sockets:0 # Replication role:master connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 # CPU used_cpu_sys:0.29 used_cpu_user:0.21 used_cpu_sys_children:0.00 used_cpu_user_children:0.00 # Cluster cluster_enabled:0 # Keyspace db0:keys=2,expires=0,avg_ttl=0 127.0.0.1:6379>
#使用客户端 redis-cli shutdown #因为Redis可以妥善处理SIGTERM信号,所以直接kill -9也是可以的 kill -9 PID
redis命令参考,建议整理过的,顺便参考官方的:http://redisdoc.com/
http://www.tuicool.com/articles/aQbQ3u
一般使用三方GUI,如redisdesktopmanager。
C:\Users\admin>cd /d d:\GMP\redis64-2.8.19
d:\GMP\redis64-2.8.19>redis-cli -h 192.168.230.128 -p 6379 -a "123456"
192.168.230.128:6379> set from-remote-key from-remote-value
OK
192.168.230.128:6379> keys *
1) "from-remote-key"
192.168.230.128:6379> get from-remote-key
"from-remote-value"
192.168.230.128:6379>
java客户端,官方推荐使用jedis、redisson(底层还是jedis,比如分布式锁,都是基于lua脚本整合setnx+expire)。spring boot 2.x开始,推荐lettuce。还有一个基于redis的java分布式锁实现redisson。
redis命令参考:http://www.redis.net.cn/tutorial/3501.html
[ta5service_2_oracle@ta5host bin]$ ./redis-benchmark -t set -q -P 3 -n 10000000
SET: 195415.55 requests per second
50个并发请求,10000个请求,检测Redis性能:
# redis-benchmark -h localhost -p 6379 -c 50 -n 10000
redis-cli -h xx -p 6379 -a 123455 monitor
它只能监控命令列表,意义不是很大。?
redis slowlog只保存在内存中,因此slowlog的效率很高,完全不用担心会影响到redis的性能。慢查询日志有两个参数:
这两个参数可以直接写到配置文件里面永久生效,也可以直接使用config set [参数名] [值]的方式临时修改:
CONFIG SET slowlog-log-slower-than 1000
CONFIG SET slowlog-max-len 10000
使用slowlog get命令,可以获取到所有的慢查询记录,也可以指定获取最后若干数量的记录。例如:
127.0.0.1:6379> SLOWLOG get 20 1) 1) (integer) 5 2) (integer) 1587967725 3) (integer) 13175 4) 1) "info" 2) 1) (integer) 4 2) (integer) 1585212402 3) (integer) 20347 4) 1) "SETEX" 2) "hsta:uid:44873D33567F9B8486613E226C6951EF" 3) "900" 4) "{\"email\":\"yangmc25005@hundsun.com\",\"id\":1,\"ip\":\"127.0.0.1\",\"lockScreenFlag\":false,\"logId\":0,\"realName\":\"123\",\"roles\":[1],\"sessio... (134 more bytes)" 3) 1) (integer) 3 2) (integer) 1582085396 3) (integer) 26045 4) 1) "SETEX" 2) "hsta:uid:35D104A11026AC46021BEF5B144D77BC" 3) "900" 4) "{\"id\":1,\"ip\":\"127.0.0.1\",\"lockScreenFlag\":false,\"logId\":0,\"realName\":\"123\",\"roles\":[1],\"sessionId\":\"35D104A11026AC46021BEF5B144D... (100 more bytes)" 4) 1) (integer) 2 2) (integer) 1579602866 3) (integer) 12625 4) 1) "SETEX" 2) "hsta:uid:3F8677B333FC0C6B6F0DF10EAF3EB22E" 3) "900" 4) "{\"email\":\"\",\"id\":1,\"ip\":\"127.0.0.1\",\"lockScreenFlag\":false,\"logId\":0,\"longTaCode\":\"F6\",\"mobile\":\"\",\"realName\":\"system\",\"roles\":[... (124 more bytes)" 5) 1) (integer) 1 2) (integer) 1577530601 3) (integer) 13496 4) 1) "EVAL" 2) "if (redis.call(‘exists‘, KEYS[1]) == 0) then redis.call(‘hset‘, KEYS[1], ARGV[2], 1); redis.call(‘pexpire‘, KEYS[1], ARGV[1]); r... (208 more bytes)" 3) "1" 4) "hsta:dlock:guid:d1ac0d25-2b0d-4335-b380-aea5b25ebf4d" 5) "1000000" 6) "745d2227-f22b-4475-b04e-bf7832092e31:1" 6) 1) (integer) 0 2) (integer) 1576038752 3) (integer) 24809 4) 1) "EVAL" 2) "if (redis.call(‘exists‘, KEYS[1]) == 0) then redis.call(‘hset‘, KEYS[1], ARGV[2], 1); redis.call(‘pexpire‘, KEYS[1], ARGV[1]); r... (208 more bytes)" 3) "1" 4) "hsta:dlock:guid:1655783790" 5) "3600000" 6) "d81d4dcb-bd34-4700-a0d4-2a2a83b366da:212"
返回的每个慢查询实体,都由6个字段组成,如果是4.0之前的版本只有前面4个字段。含义分别为:每个慢查询唯一标识(每个慢查询实体的ID都是唯一的,而且不会被重新设置,只会在redis重启后才会被重置);处理完命令后的,Unix 时间戳;执行命令所需要的时间,单位微秒;命令的参数列表,是个数组类型;发起请求的客户端IP和端口;客户端的名称(通过client setname client1 设置的客户端的名称)。
除此之外,还可以查看当前慢查询日志记录数:
127.0.0.1:6379> SLOWLOG LEN (integer) 6
清空慢查询日志内容:
SLOWLOG RESET
https://github.com/nkrode/RedisLive,用python写的。
(1) Master 最好不要做任何持久化工作,如 RDB 内存快照和 AOF 日志文件
(2) 如果数据比较重要,某个 Slave 开启 AOF 备份数据,策略设置为每秒同步一次
(3) 为了主从复制的速度和连接的稳定性, Master 和 Slave 最好在同一个局域网内
(4) 尽量避免在压力很大的主库上增加从库
(5) 主从复制不要用图状结构,用单向链表结构更为稳定,即: Master <- Slave1 <- Slave2 <-?Slave3…
redis各种高可用搭建及与spring boot的集成参见搭建高可用redis集群/sentinel及spring boot实现集群配置。
对于redis的配置清单,官网并没有维护在线文档,安装包中的redis.conf就是完整的命令清单及说明。
原文:https://blog.51cto.com/u_535420/3152750