1 简介
如果缓存不清楚,可查看 https://redis.io 或 搜索memorycache 。
下载安装后在安装bin路径有服务和客户端可以用。
当然配置环境变量后,在控制台可以使用 redis-server 启动默认配置的服务。
2 配置修改
/etc/redis/redis.conf
监听所有 ip 地址来源的 连接请求
bind 0.0.0.0 ::1
3 查看配置
执行指令:redis-cli
CONFIG GET *
查询 当前redis 服务的性能
redis-benchmark
查询某个指令的性能
redis-benchmark SCAN
清理 指定数据库 所有数据
flushdb
删除所有 数据库的 keys
FLUSHALL
SCAN 是一个基于游标的迭代器。这意味着在每次调用命令时,服务器都会返回一个更新的游标,用户需要在下一次调用中将其用作游标参数
4 Redis 常用服务信息指令
当前连接的服务信息,全面包括服务,集群,客户端
缓存服务信息 INFO
INFO # Server redis_version:5.0.7 ... config_file:/etc/redis/redis.conf # Clients connected_clients:1 ... blocked_clients:0 # Memory used_memory:2464216 used_memory_human:2.35M used_memory_rss:3645440 used_memory_rss_human:3.48M used_memory_peak:6565592 used_memory_peak_human:6.26M used_memory_peak_perc:37.53% used_memory_overhead:1438622 used_memory_startup:796224 used_memory_dataset:1025594 used_memory_dataset_perc:61.49% allocator_allocated:2999496 allocator_active:3403776 allocator_resident:8740864 total_system_memory:2047320064 total_system_memory_human:1.91G used_memory_lua:41984 used_memory_lua_human:41.00K used_memory_scripts:0 used_memory_scripts_human:0B number_of_cached_scripts:0 maxmemory:0 maxmemory_human:0B maxmemory_policy:noeviction allocator_frag_ratio:1.13 allocator_frag_bytes:404280 allocator_rss_ratio:2.57 allocator_rss_bytes:5337088 rss_overhead_ratio:0.42 rss_overhead_bytes:-5095424 mem_fragmentation_ratio:1.51 mem_fragmentation_bytes:1223232 mem_not_counted_for_evict:0 mem_replication_backlog:0 mem_clients_slaves:0 mem_clients_normal:49694 mem_aof_buffer:0 mem_allocator:jemalloc-5.2.1 active_defrag_running:0 lazyfree_pending_objects:0 # Persistence loading:0 rdb_changes_since_last_save:0 rdb_bgsave_in_progress:0 rdb_last_save_time:1675239200 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:1 rdb_current_bgsave_time_sec:-1 rdb_last_cow_size:581632 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 aof_last_cow_size:0 # Stats total_connections_received:59 total_commands_processed:117 instantaneous_ops_per_sec:0 total_net_input_bytes:2467 total_net_output_bytes:12309 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:29 keyspace_misses:0 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:644 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 # Replication role:master connected_slaves:0 master_replid:75ca73a8da1ac1077a66756bbc9d9bbf653833b4 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:0 second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 # CPU used_cpu_sys:271.134983 used_cpu_user:201.238947 used_cpu_sys_children:0.252327 used_cpu_user_children:0.315441 # Cluster cluster_enabled:0 # Keyspace db0:keys=11540,expires=0,avg_ttl=0
关闭服务
SHUTDOWN
实时统计
redis-cli连续统计模式可能是实时监控 Redis 实例的鲜为人知但非常有用的功能之一。要启用此模式,请--stat使用该选项。输出非常清楚 CLI 在此模式下的行为
redis-cli --stat
------- data ------ --------------------- load -------------------- - child -
keys mem clients blocked requests connections
3 859.84K 2 0 1800018 (+0) 193
3 859.84K 2 0 1800019 (+1) 193
3 859.84K 2 0 1800020 (+1) 193
3 859.84K 2 0 1800021 (+1) 193
3 859.84K 2 0 1800022 (+1) 193
3 859.84K 2 0 1800023 (+1) 193
3 859.84K 2 0 1800024 (+1) 193
3 859.84K 2 0 1800025 (+1) 193
3 859.84K 2 0 1800026 (+1) 193
3 859.84K 2 0 1800027 (+1) 193
3 859.84K 2 0 1800028 (+1) 193
3 859.84K 2 0 1800029 (+1) 193
3 859.84K 2 0 1800030 (+1) 193
3 859.84K 2 0 1800031 (+1) 193
3 859.84K 2 0 1800032 (+1) 193
3 859.84K 2 0 1800033 (+1) 193
3 859.84K 2 0 1800034 (+1) 193
3 859.84K 2 0 1800035 (+1) 193
3 859.84K 2 0 1800036 (+1) 193
3 859.84K 2 0 1800037 (+1) 193
------- data ------ --------------------- load -------------------- - child -
keys mem clients blocked requests connections
3 859.84K 2 0 1800038 (+1) 193
3 859.84K 2 0 1800039 (+1) 193
3 859.84K 2 0 1800040 (+1) 193扫描大keys
redis-cli用作键空间分析器。它扫描数据集以查找大键,但还提供有关数据集所包含的数据类型的信息。
使用该选项启用此模式--bigkeys,并产生详细输出:
redis-cli --bigkeys # Scanning the entire keyspace to find biggest keys as well as # average sizes per key type. You can use -i 0.1 to sleep 0.1 sec # per 100 SCAN commands (not usually needed). [00.00%] Biggest string found so far 'counter_value' with 1 bytes [00.00%] Biggest list found so far 'mylist' with 4 items -------- summary ------- Sampled 2 keys in the keyspace! Total key length in bytes is 19 (avg len 9.50) Biggest list found 'mylist' has 4 items Biggest string found 'counter_value' has 1 bytes 1 lists with 4 items (50.00% of keys, avg size 4.00) 0 hashs with 0 fields (00.00% of keys, avg size 0.00) 1 strings with 1 bytes (50.00% of keys, avg size 1.00) 0 streams with 0 entries (00.00% of keys, avg size 0.00) 0 sets with 0 members (00.00% of keys, avg size 0.00) 0 zsets with 0 members (00.00% of keys, avg size 0.00)
该程序使用该SCAN命令,因此可以在繁忙的服务器上执行它而不影响操作,但是可以使用该选项来限制每个命令-i的指定秒数的扫描过程。SCAN -i 0.01
以不阻塞 Redis 服务器的方式扫描键空间(当您使用类似的命令时确实会发生这种情况KEYS *),并打印所有键名,或针对特定模式过滤它们。
此模式与--bigkeys选项一样,使用SCAN命令,因此如果数据集正在更改,则可能会多次报告键,但如果该键自迭代开始以来就存在,则不会丢失任何键。因为它使用这个选项的命令被称为--scan.
redis-cli --scan | head -10
扫描能够使用带有选项的SCAN命令的底层模式匹配功能。--pattern
redis-cli --scan --pattern '*-11*'
扫描全部包含my 的键
redis-cli --scan --pattern '*my*'
mylist
oldmylist
统计有多少按键名计算的特定类型对象
redis-cli --scan --pattern 'user:*' | wc -l
-i 0.01 对SCAN命令对调用之间添加延迟。
监控redis 实例延迟
redis-cli --latency
min: 0, max: 1, avg: 0.19 (427 samples)
研究最大和平均延迟如何随时间变化
redis-cli --latency-history
先进的延迟研究工具,但对于没有经验的用户来说也是最复杂的解释,是使用彩色终端显示一系列延迟的能力
redis-cli --latency-dist
---------------------------------------------
. - * # .01 .125 .25 .5 milliseconds
1,2,3,...,9 from 1 to 9 milliseconds
A,B,C,D,E 10,20,30,40,50 milliseconds
F,G,H,I,J .1,.2,.3,.4,.5 seconds
K,L,M,N,O,P,Q,? 1,2,4,8,16,30,60,>60 seconds
From 0 to 100%:
---------------------------------------------
Redis 称其为内在延迟,因为它对程序员来说大多是不透明的。
通过测量内在延迟,您知道这是基线,Redis 无法超越您的系统
redis-cli --intrinsic-latency 5
Max latency so far: 1 microseconds.
Max latency so far: 18 microseconds.
Max latency so far: 31 microseconds.
Max latency so far: 145 microseconds.
Max latency so far: 441 microseconds.
Max latency so far: 484 microseconds.
Max latency so far: 1334 microseconds.
Max latency so far: 1913 microseconds.
51311846 total runs (avg latency: 0.0974 microseconds / 97.44 nanoseconds per run).
Worst run took 19632x longer than the average latency.
副本模式
redis-cli --replica
它允许检查主节点在复制流中发送到其副本的内容,以便将写入传播到其副本。选项名称很简单--replica
LRU模拟
Redis 经常被用作带有LRU eviction的缓存。根据键的数量和为缓存分配的内存量redis-cli --lru-test 100000
该程序每秒显示统计信息。在最初的几秒钟内,缓存开始被填充。未命中率稍后稳定到可以预期的实际数字。
对于某些用例,59% 的未命中率可能是不可接受的,因为 100MB 内存是不够的。观察一个使用半 GB 内存的示例。几分钟后,输出稳定到以下数字:
redis-cli有一个特殊的模式,它在请求模式中使用 80-20% 的幂律分布来执行 GET 和 SET 操作的模拟。这意味着 20% 的密钥将在 80% 的时间内被请求,这是缓存场景中的常见分布。
maxmemory在 Redis 配置中配置设置至关重要:如果最大内存使用没有上限,则命中最终将是 100%,因为所有密钥都可以存储在内存中。
如果为最大内存指定了太多键,最终将使用所有计算机 RAM。
还需要配置适当的 maxmemory 策略;大部分时间allkeys-lru被选中。
配置了 100MB 的内存限制和使用 1000 万个密钥的 LRU 模拟。
安装路径
CONFIG GET DIR
备份 数据 的目录
尝试修复 aof文件redis-check-aof --fix
查看旧的 aof 和备份 aof的不同.
diff -u
CONFIG SET loglevel warning
redis-cli -p 7000 CONFIG SET loglevel warning
远程备份
redis-cli --rdb /tmp/dump.rdb
SYNC sent to master, writing 13256 bytes to '/tmp/dump.rdb'
Transfer finished with success.
5 查看日志 monitor
monitor 是redis的实时监控模式,可以看到redis处理每一个redis请求的,调试模式将影响redis服务性能,所以不建议在线上使用。
redis-cli monitor | grep '11.10'
shell operate
add "XADD" "log:bean:141" "*" "club_id"
response:'158555-1'
query XRANGE log:bean:141 - +
delete XDEL log:bean:141 '158555-1'
6 集群配置简单例子
比如 3个节点分别为 7000,7001,7002,配置类似如下:
port 7001
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes7001.conf
cluster-node-timeout 5000
appendonly yes
启动服务
redis-server nodes7001.conf
...
链接集群节点,自动配置备机,当然也支持多个物理机
redis-cli --cluster create 127.0.0.1:7010 127.0.0.1:7011 192.168.30.1:7012
查看状态
redis-cli -p 7000 cluster nodes
持久化
RDB redis 数据库, 按指定时间间隔执行数据集 时间点快照。适合备份。
AOF 附加文件 AOF 记录服务器接收的 每一个 写入 操作,这些操作将在服务器再次启动时 播放,以重建原始数据集。使用与redis命令格式 记录命令, 并且采用追加方式,当日志太大,redis在后台重写日志
无持久性: 如果只需要 服务器正常运行时 数据存在 即可,可用禁用 持久性。
RBD + AOF :可 在同一个 实例中 合并 AOF 和 RDB,此时 redis服务重启时,AOF 文件将用于重建原始数据集,因为它的数据最完整。
此方法可获得与PostgreSQL可以提供的功能相当的数据安全性,则应同时使用两种持久性方法,
7 小结
这里基本介绍缓存的安装和配置。
下一节我们举例使用指令和三方库连接。