Nosql缓存安装配置相关指令

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 【5月更文挑战第8天】本文档介绍了Redis的基本操作和配置,包括启动服务、修改配置、查看信息及性能测试。文档结尾提到将持续性和集群配置作为后续讨论内容。

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 小结

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

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1月前
|
存储 缓存 NoSQL
NoSQL缓存数据库的使用场景实例和命令速查表
【5月更文挑战第8天】Redis 是一个内存数据结构服务,用 C 编写,支持五种数据结构,不仅限于键值对。它用于缓存、消息队列、订阅/发布系统等,提供持久化、主从复制和集群支持。了解其核心数据结构和应用场景是有效利用 Redis 的关键。
77 3
NoSQL缓存数据库的使用场景实例和命令速查表
|
1月前
|
缓存 NoSQL 关系型数据库
在Python Web开发过程中:数据库与缓存,MySQL和NoSQL数据库的主要差异是什么?
MySQL与NoSQL的主要区别在于数据结构、查询语言和可扩展性。MySQL是关系型数据库,依赖预定义的数据表结构,使用SQL进行复杂查询,适合垂直扩展。而NoSQL提供灵活的存储方式(如JSON、哈希表),无统一查询语言,支持横向扩展,适用于处理大规模、非结构化数据和高并发场景。选择哪种取决于应用需求、数据模型及扩展策略。
220 0
|
11月前
|
缓存
指令缓存队列
指令缓存队列
48 0
|
缓存
03ZSTL6-00-201-RS 指令和数据可能有不同的缓存
03ZSTL6-00-201-RS 指令和数据可能有不同的缓存
78 0
03ZSTL6-00-201-RS 指令和数据可能有不同的缓存
|
存储 缓存 运维
数据库缓存服务——NoSQL之Redis配置与优化(下)
一、缓存概念 缓存是为了调节速度不一致的两个或多个不同的物质的速度,在中间对速度较慢的一方起到加速作用,比如CPU的一级、二级缓存是保存了CPU最近经常访问的数据,内存是保存CPU经常访问硬盘的数据,而且硬盘也有大小不一的缓存,甚至是物理服务器的raid 卡有也缓存,都是为了起到加速CPU 访问硬盘数据的目的,因为CPU的速度太快了,CPU需要的数据由于硬盘往往不能在短时间内满足CPU的需求,因此CPU缓存、内存、Raid 卡缓存以及硬盘缓存就在一定程度上满足了CPU的数据需求,即CPU 从缓存读取数据可以大幅提高CPU的工作效率
180 0
|
存储 缓存 NoSQL
数据库缓存服务——NoSQL之Redis配置与优化(中)
一、缓存概念 缓存是为了调节速度不一致的两个或多个不同的物质的速度,在中间对速度较慢的一方起到加速作用,比如CPU的一级、二级缓存是保存了CPU最近经常访问的数据,内存是保存CPU经常访问硬盘的数据,而且硬盘也有大小不一的缓存,甚至是物理服务器的raid 卡有也缓存,都是为了起到加速CPU 访问硬盘数据的目的,因为CPU的速度太快了,CPU需要的数据由于硬盘往往不能在短时间内满足CPU的需求,因此CPU缓存、内存、Raid 卡缓存以及硬盘缓存就在一定程度上满足了CPU的数据需求,即CPU 从缓存读取数据可以大幅提高CPU的工作效率
102 0
|
存储 SQL 缓存
数据库缓存服务——NoSQL之Redis配置与优化(上)
一、缓存概念 缓存是为了调节速度不一致的两个或多个不同的物质的速度,在中间对速度较慢的一方起到加速作用,比如CPU的一级、二级缓存是保存了CPU最近经常访问的数据,内存是保存CPU经常访问硬盘的数据,而且硬盘也有大小不一的缓存,甚至是物理服务器的raid 卡有也缓存,都是为了起到加速CPU 访问硬盘数据的目的,因为CPU的速度太快了,CPU需要的数据由于硬盘往往不能在短时间内满足CPU的需求,因此CPU缓存、内存、Raid 卡缓存以及硬盘缓存就在一定程度上满足了CPU的数据需求,即CPU 从缓存读取数据可以大幅提高CPU的工作效率。
162 0
|
存储 缓存 Java
关于缓存一致性协议、MESI、StoreBuffer、InvalidateQueue、内存屏障、Lock指令和JMM的那点事
关于缓存一致性协议、MESI、StoreBuffer、InvalidateQueue、内存屏障、Lock指令和JMM的那点事
298 0
|
消息中间件 缓存 中间件
缓存中间件之RabbitMQ单机安装配置
缓存中间件之RabbitMQ单机安装配置
108 1
缓存中间件之RabbitMQ单机安装配置
|
存储 缓存 负载均衡
nosql缓存技术之memcached介绍、安装以及使用总结(1)
nosql缓存技术之memcached介绍、安装以及使用总结
222 0
nosql缓存技术之memcached介绍、安装以及使用总结(1)