# Redis相关笔记

  1. Redis官网 (opens new window)
  2. Redis数据备份,容灾恢复手段 (opens new window)
  3. Redis菜鸟教程 (opens new window)
  4. Redis可视化工具最全的横向评测 (opens new window)
  5. Redis可视化工具性能对比图 (opens new window)

基于Docker的Redis搭建方法

## 单节点
docker pull redis:3.2
# 无密码模式 以appendonly备份,该备份是采用增量保存写命令方式备份
docker run -p 6379:6379 --name myredis -v $PWD/data:/data  -d redis:3.2 redis-server --appendonly yes
# 有密码模式 xxxxxxx 为要设置的密码
docker run -p 6379:6379 --name myredis -v $PWD/data:/data  -d redis:3.2 redis-server --appendonly yes --requirepass "xxxxxxx"
docker exec -it myredis redis-cli
## 集群模式【只能用于测试环境,不能用于生产环境】
docker pull tommy351/redis-cluster
docker run --name myredisc -v $PWD/data:/data -p 7000:7000 -p 7001:7001 -p 7002:7002 -p 7003:7003 -p 7004:7004 -p 7005:7005 -d tommy351/redis-cluster
docker exec -it myredis /bin/sh
docker exec -it myredisc redis-cli -h 49.233.170.108 -p 7000 -c
# 解决公网访问出现 redis TTL exhausted.异常信息问题,使用CLUSTER_ANNOUNCE_IP发布。
docker run --name myredisc -v $PWD/data:/data -p 7000:7000 -p 7001:7001 -p 7002:7002 -p 7003:7003 -p 7004:7004 -p 7005:7005 \
-e CLUSTER_ANNOUNCE_IP=127.0.0.1 -d tommy351/redis-cluster	

# Redis订阅发布模式

  1. SpringBoot中集成的订阅发布模式中
    a,每个节点启动后,都会和订阅的队列连接,分布式部署,就是多个消费节点,需要加连接控制。
    b,每次接收消息,都是一个新的线程去接收,而不是之前的线程。
  2. 一旦消息被发送,如果没有订阅者接收,那么消息就会丢失。
  3. 消息传输保障,当客户端连接超时或事务回滚等情况发生时,消息会被重新发送给客户端,Redis没有提供消息传输保障。

# 实践问题

  1. 向发布订阅的队列中推送JSON数据格式问题?
    PUBLISH channel message
    message中JSON中的单引号(")需要加反斜杠()转义,然后整个JSON在加上双引号,
    示例:{"name":"dkgee","age":"29"} 放入Redis中格式 "{"name":"dkgee","age":"29"}"
上次更新: 2020-09-03 08:10:34