Redis多数据源,看这篇就够了

打印 上一主题 下一主题

主题 853|帖子 853|积分 2559

背景

Redis多数据源常见的场景:

  • 分区数据处理:当数据量增长时,单个Redis实例可能无法处理所有的数据。通过使用多个Redis数据源,可以将数据分区存储在不同的实例中,使得数据处理更加高效。
  • 多租户应用程序:对于多租户应用程序,每个租户可以拥有自己的Redis数据源,以确保数据隔离和安全性。
现在在网上的一些办理方案无法完全满足特定需求,比方不支持动态添加或更新数据源、缺乏数据源的负载均衡功能,大概不能开箱即用必要自行封装一些常用方法。
为相识决这些题目,封装了一个轻量级的Redis多数据源库,已在生产环境中长时间稳固运行。现分享出来,盼望这个库能对你的项目有所帮助。
https://github.com/codebaorg/redis-keeper

如果这篇文章帮助到了你,欢迎star一下,感谢你的支持。
特性


  • 基于redisson封装,保存redisson的所有强盛功能。
  • 支持redis多数据源设置的及时更新。
  • 支持redis多数据源的负载均衡。
  • 支持redis数据源的“只读”、“只写”、“读写”、“跳过”的状态切换。
  • 提供 130+ 常用的redis操纵方法,包括但不限string、list、hash、set、zset、geo、bitmap、hyberloglog、分布式锁、布隆过滤器、限流等。
快速开始


  • 添加maven依赖
  1. <dependency>
  2.     <groupId>org.redisson</groupId>
  3.     <artifactId>redisson</artifactId>
  4.     <version>3.15.5</version>
  5.     <scope>provided</scope>
  6. </dependency>
  7. <dependency>
  8.         <groupId>org.codeba</groupId>
  9.         <artifactId>redis-keeper-spring-boot-starter</artifactId>
  10.         <version>2024.0.0</version>
  11. </dependency>
复制代码

  • springboot的设置文件,添加redis多数据源的设置
  1. redis-keeper:
  2.   redis:
  3.     datasource:
  4.       ds1: // 此处的命名可以随便取,但是要保证唯一不重复
  5.         host: localhost
  6.         port: 6379
  7.         database: 0
  8.         password: yourPass
  9.       
  10.       ds2: // 此处的命名可以随便取,但是要保证唯一不重复
  11.         host: localhost
  12.         port: 6379
  13.         database: 0
  14.         password: yourPass
  15.         
复制代码

  • 按自定义的数据源别名获取相应的cacheTemplate,执行redis下令。
方式一:通过CacheTemplateProvider获取cacheTemplate,示比方下:
  1. public class AppTest {
  2.     @Autowired
  3.     private CacheTemplateProvider<CacheTemplate> provider;
  4.     public void test() {
  5.         final Optional<CacheTemplate> templateOptional = provider.getTemplate("ds1");
  6.         if (templateOptional.isPresent()) {
  7.             final CacheTemplate cacheTemplate = templateOptional.get();
  8.             String key = "foo";
  9.             String value = "bar";
  10.             cacheTemplate.set(key, value);
  11.         }
  12.     }
  13.    
  14. }
复制代码
方式二:通过代理类CacheTemplateProxy获取cacheTemplate,示比方下:
  1. public class AppTest {
  2.     private final CacheTemplate cacheTemplate = CacheTemplateProxy.asTemplate("ds1");
  3.     public void test() {
  4.         String key = "foo";
  5.         String value = "bar";
  6.         cacheTemplate.set(key, value);
  7.     }
  8.    
  9. }
复制代码
更多示例

多数据源及时更新

必要:spring cloud + nacos
现有的数据源设置示比方下:
  1. redis-keeper:
  2.   redis:
  3.     datasource:
  4.       ds1:
  5.         host: localhost
  6.         port: 6379
  7.         database: 10
  8.         password: xxx
  9.         invoke-params-print: true
复制代码
测试方法:
  1. @RestController
  2. @RequiredArgsConstructor
  3. public class TestController {
  4.     private final CacheTemplateProvider<CacheTemplate> provider;
  5.     @RequestMapping("/test")
  6.     public void testRefresh() {
  7.         final Optional<CacheTemplate> templateOptional = provider.getTemplate("ds1");
  8.         templateOptional.ifPresent(cacheTemplate -> {
  9.             cacheTemplate.set("foo", "bar");
  10.             cacheTemplate.del("foo");
  11.         });
  12.     }
  13. }
复制代码
访问上面的方法,日记打印如下(可以看到写入的redis库是10库):
  1. 2024-03-12T11:33:37.850+08:00  INFO 62914 --- [nio-8000-exec-1] o.c.r.k.support.DefaultRedissonTemplate  : cmd:set, params:[foo, bar], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=10}]
  2. 2024-03-12T11:33:37.858+08:00  INFO 62914 --- [nio-8000-exec-1] o.c.r.k.support.DefaultRedissonTemplate  : cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=10}]
复制代码
修改数据源设置,比如修改库为0库,此时可以看到nacos设置及时更新日记:
  1. 2024-03-12T11:43:51.683+08:00  INFO 62914 --- [r-localhost-216] com.alibaba.nacos.common.remote.client   : [6253dca3-136e-4ac1-b894-fb4c11483703_config-0] Receive server push request, request = ConfigChangeNotifyRequest, requestId = 1
  2. 2024-03-12T11:43:51.683+08:00  INFO 62914 --- [r-localhost-216] c.a.n.client.config.impl.ClientWorker    : [6253dca3-136e-4ac1-b894-fb4c11483703_config-0] [server-push] config changed. dataId=redis-keeper-demo.yaml, group=DEFAULT_GROUP,tenant=null
  3. 2024-03-12T11:43:51.684+08:00  INFO 62914 --- [r-localhost-216] com.alibaba.nacos.common.remote.client   : [6253dca3-136e-4ac1-b894-fb4c11483703_config-0] Ack server push request, request = ConfigChangeNotifyRequest, requestId = 1
  4. 2024-03-12T11:43:51.700+08:00  INFO 62914 --- [s.client.Worker] c.a.n.client.config.impl.ClientWorker    : [fixed-localhost_8848] [data-received] dataId=redis-keeper-demo.yaml, group=DEFAULT_GROUP, tenant=, md5=dddd513021564c6d6322e18783ac4f2b, content=server:
  5. redis-keeper:
  6.   redis:
  7.     datasource:
  8.       ds1:
  9.         host: localhost
  10.     ..., type=yaml
  11. 2024-03-12T11:43:51.701+08:00  INFO 62914 --- [s.client.Worker] c.a.nacos.client.config.impl.CacheData   : [fixed-localhost_8848] [notify-listener] time cost=0ms in ClientWorker, dataId=redis-keeper-demo.yaml, group=DEFAULT_GROUP, md5=dddd513021564c6d6322e18783ac4f2b, listener=com.alibaba.cloud.nacos.refresh.NacosContextRefresher$1@178412d1
  12. 2024-03-12T11:43:51.701+08:00  INFO 62914 --- [ternal.notifier] c.a.nacos.client.config.impl.CacheData   : [fixed-localhost_8848] [notify-context] dataId=redis-keeper-demo.yaml, group=DEFAULT_GROUP, md5=dddd513021564c6d6322e18783ac4f2b
  13. 2024-03-12T11:43:51.915+08:00  INFO 62914 --- [ternal.notifier] c.a.c.n.c.NacosConfigDataLoader          : [Nacos Config] Load config[dataId=redis-keeper-demo.yaml, group=DEFAULT_GROUP] success
  14. 2024-03-12T11:43:51.950+08:00  INFO 62914 --- [ternal.notifier] o.s.c.e.event.RefreshEventListener       : Refresh keys changed: [redis-keeper.redis.datasource.ds1.database]
  15. 2024-03-12T11:43:51.950+08:00  INFO 62914 --- [ternal.notifier] c.a.nacos.client.config.impl.CacheData   : [fixed-localhost_8848] [notify-ok] dataId=redis-keeper-demo.yaml, group=DEFAULT_GROUP, md5=dddd513021564c6d6322e18783ac4f2b, listener=com.alibaba.cloud.nacos.refresh.NacosContextRefresher$1@178412d1 ,cost=249 millis.
复制代码
再次访问上面的方法,日记打印如下(可以看到写入的redis库是0库):
  1. 2024-03-12T11:46:11.849+08:00  INFO 62914 --- [nio-8000-exec-4] o.c.r.k.support.DefaultRedissonTemplate  : cmd:set, params:[foo, bar], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=0}]
  2. 2024-03-12T11:46:11.861+08:00  INFO 62914 --- [nio-8000-exec-4] o.c.r.k.support.DefaultRedissonTemplate  : cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=0}]
复制代码
多数据源负载均衡

有的业务场景必要多套redis集群,来承接同一业务的流量,起到分流的作用,这时就必要从多个数据源中获取其中的某一个进行redis的读写。
负载均衡的算法现在支持两种:轮询、随机
redis多数据源设置,示比方下:
注意:只有 redis-keeper.redis.datasources 大概 redis-keeper.redisson.datasources 设置下的多数据源支持负载均衡。
  1. redis-keeper:
  2.   redis:
  3.     datasources:
  4.       ds2:
  5.         - host: localhost
  6.           port: 6379
  7.           database: 1
  8.           password: xxx
  9.           invoke-params-print: true
  10.         - host: localhost
  11.           port: 6379
  12.           database: 2
  13.           password: xxx
  14.           invoke-params-print: true
  15.         - host: localhost
  16.           port: 6379
  17.           database: 3
  18.           password: xxx
  19.           invoke-params-print: true
复制代码
轮询示比方下:
  1. public class AppTest {
  2.     @Autowired
  3.     private CacheTemplateProvider<CacheTemplate> provider;
  4.     public void testPollTemplate() {
  5.         String key = "foo";
  6.         for (int i = 1; i <= 10; i++) {
  7.             final Optional<CacheTemplate> templateOptional = provider.pollTemplate("ds2");
  8.             if (templateOptional.isPresent()) {
  9.                 final CacheTemplate template = templateOptional.get();
  10.                 final String str = String.valueOf(i);
  11.                 template.set(key, str);
  12.                 template.get(key).ifPresent(el -> {
  13.                     assert str.equals(el);
  14.                 });
  15.                 template.del(key);
  16.             }
  17.         }
  18.     }
  19.    
  20. }
复制代码
日记打印结果,可以看到设置的redis数据源的出现的次数是相近的:
  1. 2024-03-12 12:15:15.614  INFO 67575 --- [main] : cmd:set, params:[foo, 1], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=1}]
  2. 2024-03-12 12:15:15.621  INFO 67575 --- [main] : cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=1}]
  3. 2024-03-12 12:15:15.624  INFO 67575 --- [main] : cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=1}]
  4. 2024-03-12 12:15:15.627  INFO 67575 --- [main] : cmd:set, params:[foo, 2], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=2}]
  5. 2024-03-12 12:15:15.629  INFO 67575 --- [main] : cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=2}]
  6. 2024-03-12 12:15:15.635  INFO 67575 --- [main] : cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=2}]
  7. 2024-03-12 12:15:15.635  INFO 67575 --- [main] : cmd:set, params:[foo, 3], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  8. 2024-03-12 12:15:15.636  INFO 67575 --- [main] : cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  9. 2024-03-12 12:15:15.638  INFO 67575 --- [main] : cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  10. 2024-03-12 12:15:15.639  INFO 67575 --- [main] : cmd:set, params:[foo, 4], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=1}]
  11. 2024-03-12 12:15:15.652  INFO 67575 --- [main] : cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=1}]
  12. 2024-03-12 12:15:15.653  INFO 67575 --- [main] : cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=1}]
  13. 2024-03-12 12:15:15.654  INFO 67575 --- [main] : cmd:set, params:[foo, 5], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=2}]
  14. 2024-03-12 12:15:15.655  INFO 67575 --- [main] : cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=2}]
  15. 2024-03-12 12:15:15.656  INFO 67575 --- [main] : cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=2}]
  16. 2024-03-12 12:15:15.656  INFO 67575 --- [main] : cmd:set, params:[foo, 6], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  17. 2024-03-12 12:15:15.658  INFO 67575 --- [main] : cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  18. 2024-03-12 12:15:15.658  INFO 67575 --- [main] : cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  19. 2024-03-12 12:15:15.659  INFO 67575 --- [main] : cmd:set, params:[foo, 7], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=1}]
  20. 2024-03-12 12:15:15.660  INFO 67575 --- [main] : cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=1}]
  21. 2024-03-12 12:15:15.661  INFO 67575 --- [main] : cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=1}]
  22. 2024-03-12 12:15:15.667  INFO 67575 --- [main] : cmd:set, params:[foo, 8], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=2}]
  23. 2024-03-12 12:15:15.669  INFO 67575 --- [main] : cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=2}]
  24. 2024-03-12 12:15:15.669  INFO 67575 --- [main] : cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=2}]
  25. 2024-03-12 12:15:15.670  INFO 67575 --- [main] : cmd:set, params:[foo, 9], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  26. 2024-03-12 12:15:15.672  INFO 67575 --- [main] : cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  27. 2024-03-12 12:15:15.673  INFO 67575 --- [main] : cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  28. 2024-03-12 12:15:15.674  INFO 67575 --- [main] : cmd:set, params:[foo, 10], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=1}]
  29. 2024-03-12 12:15:15.675  INFO 67575 --- [main] : cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=1}]
  30. 2024-03-12 12:15:15.676  INFO 67575 --- [main] : cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=1}]
复制代码
随机示比方下:
  1. public class AppTest {
  2.     @Autowired
  3.     private CacheTemplateProvider<CacheTemplate> provider;
  4.     public void testRandomTemplate() {
  5.         String key = "foo";
  6.         for (int i = 1; i <= 10; i++) {
  7.             final Optional<CacheTemplate> templateOptional = provider.randomTemplate("ds2");
  8.             if (templateOptional.isPresent()) {
  9.                 final CacheTemplate template = templateOptional.get();
  10.                 final String str = String.valueOf(i);
  11.                 template.set(key, str);
  12.                 template.get(key).ifPresent(el -> {
  13.                     assert str.equals(el);
  14.                 });
  15.                 template.del(key);
  16.             }
  17.         }
  18.     }
  19.    
  20. }
复制代码
日记打印结果,可以看到设置的redis数据源的出现的次数是随机的:
  1. 2024-03-12 12:05:06.450  INFO 66199 --- [main]: cmd:set, params:[foo, 1], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  2. 2024-03-12 12:05:06.457  INFO 66199 --- [main]: cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  3. 2024-03-12 12:05:06.461  INFO 66199 --- [main]: cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  4. 2024-03-12 12:05:06.464  INFO 66199 --- [main]: cmd:set, params:[foo, 2], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  5. 2024-03-12 12:05:06.465  INFO 66199 --- [main]: cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  6. 2024-03-12 12:05:06.467  INFO 66199 --- [main]: cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  7. 2024-03-12 12:05:06.468  INFO 66199 --- [main]: cmd:set, params:[foo, 3], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  8. 2024-03-12 12:05:06.469  INFO 66199 --- [main]: cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  9. 2024-03-12 12:05:06.470  INFO 66199 --- [main]: cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  10. 2024-03-12 12:05:06.472  INFO 66199 --- [main]: cmd:set, params:[foo, 4], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=2}]
  11. 2024-03-12 12:05:06.473  INFO 66199 --- [main]: cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=2}]
  12. 2024-03-12 12:05:06.475  INFO 66199 --- [main]: cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=2}]
  13. 2024-03-12 12:05:06.475  INFO 66199 --- [main]: cmd:set, params:[foo, 5], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=1}]
  14. 2024-03-12 12:05:06.476  INFO 66199 --- [main]: cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=1}]
  15. 2024-03-12 12:05:06.477  INFO 66199 --- [main]: cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=1}]
  16. 2024-03-12 12:05:06.478  INFO 66199 --- [main]: cmd:set, params:[foo, 6], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  17. 2024-03-12 12:05:06.479  INFO 66199 --- [main]: cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  18. 2024-03-12 12:05:06.481  INFO 66199 --- [main]: cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  19. 2024-03-12 12:05:06.482  INFO 66199 --- [main]: cmd:set, params:[foo, 7], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  20. 2024-03-12 12:05:06.484  INFO 66199 --- [main]: cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  21. 2024-03-12 12:05:06.485  INFO 66199 --- [main]: cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  22. 2024-03-12 12:05:06.486  INFO 66199 --- [main]: cmd:set, params:[foo, 8], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  23. 2024-03-12 12:05:06.488  INFO 66199 --- [main]: cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  24. 2024-03-12 12:05:06.489  INFO 66199 --- [main]: cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  25. 2024-03-12 12:05:06.491  INFO 66199 --- [main]: cmd:set, params:[foo, 9], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=2}]
  26. 2024-03-12 12:05:06.492  INFO 66199 --- [main]: cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=2}]
  27. 2024-03-12 12:05:06.493  INFO 66199 --- [main]: cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=2}]
  28. 2024-03-12 12:05:06.494  INFO 66199 --- [main]: cmd:set, params:[foo, 10], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  29. 2024-03-12 12:05:06.495  INFO 66199 --- [main]: cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
  30. 2024-03-12 12:05:06.496  INFO 66199 --- [main]: cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=3}]
复制代码
获取指定状态标识的数据源

默认环境下数据源的状态标识是读写,还有三个可配状态标识:只读、只写、跳过。
注意:此处的状态只是一种标识,用于筛选获取指定的数据源,并不用于控制redis的读写下令。
数据源设置如下:
  1. redis-keeper:
  2.   redis:
  3.     datasource:
  4.       ds1:
  5.         host: localhost
  6.         port: 6379
  7.         database: 10
  8.         password: xxx
  9.         status: RW
  10.         invoke-params-print: true
复制代码
测试方法:
  1. public void testTemplateWithStatus() {
  2.         final Optional<CacheTemplate> templateOptional = provider.getTemplate("ds1", CacheDatasourceStatus.RW);
  3.         if (templateOptional.isPresent()) {
  4.             final CacheTemplate cacheTemplate = templateOptional.get();
  5.             String key = "foo";
  6.             String value = "bar";
  7.             cacheTemplate.set(key, value);
  8.             final Optional<Object> optional = cacheTemplate.get(key);
  9.             optional.ifPresent(el -> {
  10.                 assert value.equals(el);
  11.             });
  12.             cacheTemplate.del(key);
  13.         }
  14.         assert !provider.getTemplate("ds1", CacheDatasourceStatus.SKIP).isPresent();
  15.     }
复制代码
访问上面的方法,日记打印如下:
  1. 2024-03-12 14:28:34.183  INFO 77230 --- [main]: cmd:set, params:[foo, bar], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=0}]
  2. 2024-03-12 14:28:34.190  INFO 77230 --- [main]: cmd:get, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=0}]
  3. 2024-03-12 14:28:34.193  INFO 77230 --- [main]: cmd:del, params:[foo], connectionInfo:[SingleServer:{Address=redis://localhost:6379,Database=0}]
复制代码
更多详细示例,请查看:https://github.com/codebaorg/redis-keeper/blob/main/README_zh.md
对比其他方案

如果这篇文章帮助到了你,欢迎评论、点赞、转发。
本文由博客一文多发平台 OpenWrite 发布!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

渣渣兔

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表