缓存的安装和配置

举报
码乐 发表于 2024/04/20 09:32:57 2024/04/20
【摘要】 0 简介如果缓存不清楚,可查看 https://redis.io 或 搜索memorycache 。下载安装后在安装bin路径有服务和客户端可以用。当然配置环境变量后,在控制台可以使用 redis-server 启动默认配置的服务。 1 配置修改/etc/redis/redis.conf监听所有 ip 地址来源的 连接请求bind 0.0.0.0 ::1 2, 查看配置执行指令:redi...

0 简介

如果缓存不清楚,可查看 https://redis.io 或 搜索memorycache 。
下载安装后在安装bin路径有服务和客户端可以用。
当然配置环境变量后,在控制台可以使用 redis-server 启动默认配置的服务。

1 配置修改

/etc/redis/redis.conf
监听所有 ip 地址来源的 连接请求
bind 0.0.0.0 ::1

2, 查看配置

执行指令:redis-cli

CONFIG GET *

查询 当前redis 服务的性能

redis-benchmark      

查询某个指令的性能

 redis-benchmark SCAN  

清理 指定数据库 所有数据

    flushdb  

删除所有 数据库的 keys

   FLUSHALL  

SCAN 是一个基于游标的迭代器。这意味着在每次调用命令时,服务器都会返回一个更新的游标,用户需要在下一次调用中将其用作游标参数

3, 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.

3,查看日志 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'

4 集群配置简单例子

比如 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可以提供的功能相当的数据安全性,则应同时使用两种持久性方法,

4 小结

这里基本介绍缓存的安装和配置。
下一节我们举例使用指令和三方库连接。
**

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。