Redis安装使用配置以及缓存项目-黑马点评

Redis简介

Redis安装

  • CentOS
  • Docker
  • windows
  • Redis的图形化界面

CentOS安装

位置
/usr/local/src/redis-6.2.6
Redis安装使用配置以及缓存项目-黑马点评_第1张图片
启动进入Redis目录下的src目录

  • 启动服务端
./redis-server

Redis安装使用配置以及缓存项目-黑马点评_第2张图片

  • 启动客户端
./redis-cli -p 6379

Redis配置文件Redis conf

  • redis位置就在redis安装目录下
    Redis安装使用配置以及缓存项目-黑马点评_第3张图片

配置 Redis 为后台服务 将配置文件中的 daemonize no 改成 daemonize yes,配置 redis 为后台启动。

Redis 设置访问密码 在配置文件中找到 requirepass,去掉前面的注释,并修改后面的密码。

常用配置文件例子 redis.conf

#默认端口6379
port 6379
#绑定ip,如果是内网可以直接绑定 127.0.0.1, 或者忽略, 0.0.0.0是外网、注释掉连接外网
# bind 0.0.0.0
#守护进程启动
daemonize yes
#超时
timeout 300
loglevel notice
#分区
databases 16
save 900 1
save 300 10
save 60 10000
rdbcompression yes
#存储文件
dbfilename dump.rdb
#密码 abcd123
requirepass abcd123

在redis安装目录下,以redis.conf配置文件进行启动

./redis.conf

DOCKER运行redis

1、拉取redis镜像

docker pull redis

复制
2、创建挂载目录

mkdir /docker-data/redis

复制
3、下载redis.conf文件

wget http://download.redis.io/redis-stable/redis.conf

复制
4、权限

chmod 777 redis.conf

复制
5、修改默认配置信息

vi /docker-data/redis/redis.conf
bind 127.0.0.1 # 这行要注释掉,解除本地连接限制
protected-mode no # 默认yes,如果设置为yes,则只允许在本机的回环连接,其他机器无法连接。
daemonize no # 默认no 为不守护进程模式,docker部署不需要改为yes,docker run -d本身就是后台启动,不然会冲突
requirepass 123456 # 设置密码
appendonly yes # 持久化

6、docker启动redis

docker run --name redis \
-p 6379:6379 \
-v /docker-data/redis/redis.conf:/etc/redis/redis.conf \
-v /docker-data/redis:/data \
-d redis redis-server /etc/redis/redis.conf --appendonly yes

说明:

-p 6379:6379:端口映射,前面是宿主机,后面是容器。
–name redis:指定该容器名称。
-v 挂载文件或目录:前面是宿主机,后面是容器。
-d redis redis-server /etc/redis/redis.conf:表示后台启动redis,以配置文件启动redis,加载容器内的conf文件。
appendonly yes:开启redis 持久化。
7、检查redis运行状态

docker ps

8、启动

Windows启动Redis

Windows启动Redis

进入Windwos Redis的目录下

Redis安装使用配置以及缓存项目-黑马点评_第4张图片

cmd启动Redis服务器

Resp连接windowsRedis 不用改ip地址和端口,账户密码都无

Redis安装使用配置以及缓存项目-黑马点评_第5张图片

然后cmd输入Redis-Cli启动客户端,操作Redis

redis-cli
  • 问题redis客户端存取数据乱码

Redis安装使用配置以及缓存项目-黑马点评_第6张图片

(1条消息) redis键值出现 \xac\xed\x00\x05t\x00&的解决方法_Abstracted的博客-CSDN博客_\xac
https://blog.csdn.net/qq_16159433/article/details/121491555


(1条消息) redis存中文显示“\xe2\xe5\xb0\x8f\xe5\x87\xa1\x80\x9c\xe2\x80\x9d“解决方案_佐杰的博客-CSDN博客
https://blog.csdn.net/OnlyoneFrist/article/details/109449698

Redis安装使用配置以及缓存项目-黑马点评_第7张图片


Resp远程连接Redis服务端

  • 账户和密码是什么
    root
    ROOT
    端口号

  • 远程连接失败咋整

RSP01-去配置文件配置相关的属性
redis/src/redis.conf文件去配,怎么配去网上查
RESP0102-加载配置文件 redis-server 配置文件,启动redis服务端
RESP02-查询虚拟机的ip地址-ifconfig-账户名 和 redis的密码

daemonize属性改为yes     (表明需要在后台运行)

bind 127.0.0.1 这一行给注释掉   (开启redis远程访问服务)

protected-mode 设置成no   (允许远程访问)

Redis安装使用配置以及缓存项目-黑马点评_第8张图片

Redis开机自启

以前我们启动redis比较麻烦,切换到/usr/loacal/bin/redis 目录下
启动redis-server redis.conf文件
启动redis服务端,现在设置开机后台自动启动

参考文章

涉及文件夹
/etc/init.d

参考文章02

Redis的基本使用

命令

redis-server命令 – 启动Redis服务程序
[root@linuxcool ~]# redis-server /etc/myredis.conf --loglevel verbose

常用数据结构

参考博客

Redis安装使用配置以及缓存项目-黑马点评_第9张图片

官方文档命令

# redis常用命令

# 查所有数据
KEYS *   
# 查询以XX开头的数据
KEYS a*
# 删除指定的key
DEL k1 k2 k3
# 批量创建数据
MSET k1 va k2 v2 k3 v3
# 判断一个key是否存在
EXISTS
# 给一个key设置有效期,有效期到期是该key会被自动删除
EXPIRE
# 查看一个key的剩余有效期
TTL

String类型

String类型,也就是字符串类型,是Redis中最简单的存储类型。其value是字符串,不过根据字符串的格式不同,又可以分为3类:

  • string:普通字符串
  • int:整数类型,可以做自增、自减操作
  • float:浮点类型,可以做自增、自减操作

常见命令

String的常见命令有:
SET:添加或者修改已经存在的一个String类型的键值对
GET:根据key获取String类型的value
MSET:批量添加多个String类型的键值对
MGET:根据多个key获取多个String类型的value
INCR:让一个整型的key自增1
INCRBY:让一个整型的key自增并指定步长,例如:incrby num 2 让num值自增2
INCRBYFLOAT:让一个浮点类型的数字自增并指定步长
SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行
SETEX:添加一个String类型的键值对,并且指定有效期

Redis的Key结构
Redis安装使用配置以及缓存项目-黑马点评_第10张图片

List

Redis中的List类型与Java中的LinkedList类似,可以看做是一个双向链表结构。既可以支持正向检索和也可以支持反向检索。特征也与LinkedList类似:

  • 有序
  • 元素可以重复
  • 插入和删除快
  • 查询速度一般
  • 常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表等

List的常见命令有:

LPUSH key  element ... :向列表左侧插入一个或多个元素
LPOP key:移除并返回列表左侧的第一个元素,没有则返回nil
RPUSH key  element ... :向列表右侧插入一个或多个元素
RPOP key:移除并返回列表右侧的第一个元素
LRANGE key star end:返回一段角标范围内的所有元素
BLPOP和BRPOP:与LPOP和RPOP类似,只不过在没有元素时等待指定时间,而不是直接返回nil

Redis安装使用配置以及缓存项目-黑马点评_第11张图片

如何利用List结构模拟一个栈?
入口和出口在同一边
如何利用List结构模拟一个队列?
入口和出口在不同边
如何利用List结构模拟一个阻塞队列?
入口和出口在不同边
出队时采用BLPOP或BRPOP

Set

Redis的Set结构与Java中的HashSet类似,可以看做是一个value为null的HashMap。因为也是一个hash表,因此具备与HashSet类似的特征:

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集、并集、差集等功能
SADD key member ... :向set中添加一个或多个元素
SREM key member ... : 移除set中的指定元素
SCARD key: 返回set中元素的个数
SMEMBERS:获取set中的所有元素
SISMEMBER key member:判断一个元素是否存在于set中
SDIFF key1 key2 ... :求key1与key2的差集
SUNION key1 key2 ..:求key1和key2的并集

Redis安装使用配置以及缓存项目-黑马点评_第12张图片
Redis安装使用配置以及缓存项目-黑马点评_第13张图片

127.0.0.1:6379> sadd myset world
(integer) 1
127.0.0.1:6379> smembers myset
1) "world"
127.0.0.1:6379> sadd myset "hello"
(integer) 1

127.0.0.1:6379> sadd myset02 hello
(integer) 1
127.0.0.1:6379> sadd myset02 helloworld
(integer) 1
127.0.0.1:6379> sadd myset02 world
(integer) 1
127.0.0.1:6379> smembers myset02
1) "world"
2) "hello"
3) "helloworld"
127.0.0.1:6379> sinter myset myset02
1) "world"
2) "hello"
127.0.0.1:6379> SDIFF myset02 myset
1) "helloworld"
127.0.0.1:6379> sunion myset myset02
1) "world"
2) "hello"
3) "helloworld"
127.0.0.1:6379> 



Redis安装使用配置以及缓存项目-黑马点评_第14张图片

练习

将下列数据用Redis的Set集合来存储:
张三的好友有:李四、王五、赵六
李四的好友有:王五、麻子、二狗
利用Set的命令实现下列功能:
计算张三的好友有几人
计算张三和李四有哪些共同好友
查询哪些人是张三的好友却不是李四的好友
查询张三和李四的好友总共有哪些人
判断李四是否是张三的好友
判断张三是否是李四的好友
将李四从张三的好友列表中移除

SortedSet(可排序set集合)

Redis的SortedSet是一个可排序的set集合,与Java中的TreeSet有些类似,但底层数据结构却差别很大。SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加 hash表。
SortedSet具备下列特性:

  • 可排序
  • 元素不重复
  • 查询速度快
  • 因为SortedSet的可排序特性,经常被用来实现排行榜这样的功能。

SortedSet的常见命令有:

ZADD key score member:添加一个或多个元素到sorted set ,如果已经存在则更新其score值
ZREM key member:删除sorted set中的一个指定元素
ZSCORE key member : 获取sorted set中的指定元素的score值
ZRANK key member:获取sorted set 中的指定元素的排名
ZCARD key:获取sorted set中的元素个数
ZCOUNT key min max:统计score值在给定范围内的所有元素的个数
ZINCRBY key increment member:让sorted set中的指定元素自增,步长为指定的increment值
ZRANGE key min max:按照score排序后,获取指定排名范围内的元素
ZRANGEBYSCORE key min max:按照score排序后,获取指定score范围内的元素
ZDIFF、ZINTER、ZUNION:求差集、交集、并集
注意:所有的排名默认都是升序,如果要降序则在命令的Z后面添加REV即可

127.0.0.1:6379> zadd key1 02 value02
(integer) 1
127.0.0.1:6379> zaddd key1 03 value03
127.0.0.1:6379> zscore key1 value03
"3"

Hash类型

Hash类型,也叫散列,其value是一个无序字典,类似于Java中的HashMap结构。
String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便:
Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD

Hash算法

Redis中hash数据结构

Redis中Hash命令的使用

127.0.0.1:6379> HMSET runoob field1 "Hello" field2 "World"
OK
127.0.0.1:6379> HGET runoob field1
"Hello"
127.0.0.1:6379> HGET runoob field2
"World"
127.0.0.1:6379>

常用命令

Hash的常见命令有:
HSET key field value:添加或者修改hash类型key的field的值
HGET key field:获取一个hash类型key的field的值
HMSET:批量添加多个hash类型key的field的值
HMGET:批量获取多个hash类型key的field的值
HGETALL:获取一个hash类型的key中的所有的field和value
HKEYS:获取一个hash类型的key中的所有的field
HVALS:获取一个hash类型的key中的所有的value
HINCRBY:让一个hash类型key的字段值自增并指定步长
HSETNX:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行

Redis事务

Redis发布订阅

Java操作Redis

Redis安装使用配置以及缓存项目-黑马点评_第15张图片

Jedis的官网地址: https://github.com/redis/jedis,我们先来个快速入门:
引入依赖:

  
  redis.clients
   jedis
   3.7.0
   

建立连接

private Jedis jedis;
@BeforeEach
void setUp() {
    // 建立连接
        jedis = new Jedis("192.168.150.101", 6379);    
        // 设置密码
           jedis.auth("123321");    
           // 选择库
               jedis.select(0);
               }

3.测试string

@Test
void testString() {
   // 插入数据,方法名称就是redis命令名称,非常简单
     String result = jedis.set("name", "张三");
        System.out.println("result = " + result); 
          // 获取数据
           String name = jedis.get("name");
            System.out.println("name = " + name);
            }

4.释放资源

@AfterEach
void tearDown() {
   // 释放资源
      if (jedis != null) {
             jedis.close();
                }
     }

Jedis使用的基本步骤:

  • 引入依赖
  • 创建Jedis对象,建立连接
  • 使用Jedis,方法名与Redis命令一致
  • 释放资源

Redis连接池
Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此我们推荐大家使用Jedis连接池代替Jedis的直连方式

public class JedisConnectionFactory { 
private static final JedisPool jedisPool;
   static {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
               // 最大连接     
jedisPoolConfig.setMaxTotal(8);
                // 最大空闲连接
jedisPoolConfig.setMaxIdle(8); 
               // 最小空闲连接
jedisPoolConfig.setMinIdle(0);
              // 设置最长等待时间, ms     
jedisPoolConfig.setMaxWaitMillis(200);    
jedisPool = new JedisPool(jedisPoolConfig, "192.168.150.101", 6379,                1000, "123321");   
}  
// 获取Jedis对象
public static Jedis getJedis(){
    return jedisPool.getResource();
 }
}

SpringDataRedis

SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做SpringDataRedis,官网地址:https://spring.io/projects/spring-data-redis
提供了对不同Redis客户端的整合(Lettuce和Jedis)
提供了RedisTemplate统一API来操作Redis
支持Redis的发布订阅模型
支持Redis哨兵和Redis集群
支持基于Lettuce的响应式编程
支持基于JDK、JSON、字符串、Spring对象的数据序列化及反序列化
支持基于Redis的JDKCollection实现

Redis安装使用配置以及缓存项目-黑马点评_第16张图片



    org.springframework.boot
     spring-boot-starter-data-redis
   
     
   
        org.apache.commons
            commons-pool2
    

配置文件

spring:
	 redis:
	 	 host: 192.168.150.101
	 	  port: 6379
	 	  password: 123321
	 	  lettuce:
	 	  pool:
	 	  max-active: 8 # 最大连接
	 	   max-idle: 8 # 最大空闲连接
	 	    min-idle: 0 # 最小空闲连接
	 	     max-wait: 100 # 连接等待时间

Redis安装使用配置以及缓存项目-黑马点评_第17张图片

序列化和自定义序列化方式

Redis安装使用配置以及缓存项目-黑马点评_第18张图片

我们可以自定义RedisTemplate的序列化方式,代码如下:

@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)      throws UnknownHostException {   
    // 创建Template    
    RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();   
    // 设置连接工厂
    redisTemplate.setConnectionFactory(redisConnectionFactory);
        // 设置序列化工具
    GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
// key和 hashKey采用 string序列化    
redisTemplate.setKeySerializer(RedisSerializer.string());    
redisTemplate.setHashKeySerializer(RedisSerializer.string());
// value和 hashValue采用 JSON序列化  
 redisTemplate.setValueSerializer(jsonRedisSerializer);   
 redisTemplate.setHashValueSerializer(jsonRedisSerializer);   
 
 return redisTemplate;
}

Redis安装使用配置以及缓存项目-黑马点评_第19张图片

Redis安装使用配置以及缓存项目-黑马点评_第20张图片

Spring默认提供了一个StringRedisTemplate类,它的key和value的序列化方式默认就是String方式。省去了我们自定义RedisTemplate的过程:

@Autowire
private StringRedisTemplate stringRedisTemplate;
// JSON工
private static final ObjectMapper mapper = new ObjectMapper();

@Test
void testStringTemplate() throws JsonProcessingException {
    // 准备
User user = new User("虎哥", 18);
    // 手动序列
 String json = mapper.writeValueAsString(user);
    // 写入一条数据到redis
  stringRedisTemplate.opsForValue().set("user:200", json); 
    // 读取数据
  String val = stringRedisTemplate.opsForValue().get("user:200");
    // 反序列化 JSON变对象
  User user1 = mapper.readValue(val, User.class);
         System.out.println("user1 = " + user1);
                    }

方案一:

  • 自定义RedisTemplate
  • 修改RedisTemplate的序列化器为GenericJackson2JsonRedisSerializer
    方案二:
  • 使用StringRedisTemplate
  • 写入Redis时,手动把对象序列化为JSON
  • 读取Redis时,手动把读取到的JSON反序列化为对象

Redis缓存穿透和雪崩

何谓缓存穿透,高并发访问,缓存重建业务毕竟复杂的key失效了
Redis安装使用配置以及缓存项目-黑马点评_第21张图片
解决方法

  • 互斥锁
  • 逻辑过期
    Redis安装使用配置以及缓存项目-黑马点评_第22张图片

黑马点评项目中的Redis

Redis安装使用配置以及缓存项目-黑马点评_第23张图片

Day01
导入项目,修改redis和mysql的ip,启动项目 visit this
http://localhost:8081/shop-type/list
Redis安装使用配置以及缓存项目-黑马点评_第24张图片

ok了家人们
Redis安装使用配置以及缓存项目-黑马点评_第25张图片

http://127.0.0.1:8080

启动nginx在windows平台

windows平台启动nginx
Redis安装使用配置以及缓存项目-黑马点评_第26张图片

短信验证码

Redis安装使用配置以及缓存项目-黑马点评_第27张图片
Redis安装使用配置以及缓存项目-黑马点评_第28张图片

Redis安装使用配置以及缓存项目-黑马点评_第29张图片

解决Session问题和Redis实现共享Session

多台Tomcat并不共享session存储空间,当请求切换到不同tomcat服务时导致数据丢失的问题。一台tomcat的session共享,session替代方案为数据共享、内存存储、key、value结构

  • 数据结构 hash结构
  • 针对单个字段CRUD

Redis安装使用配置以及缓存项目-黑马点评_第30张图片
不会Hash的数据结构的自己去复习和找文章

Redis安装使用配置以及缓存项目-黑马点评_第31张图片

  • 登录拦截器优化
    Redis安装使用配置以及缓存项目-黑马点评_第32张图片
  • 不会LocalThread的自己去找文章复习
  • 不会SpringMVC interceptor的自己去找文章复习

商户查询缓存

  • 啥是缓存
    Redis安装使用配置以及缓存项目-黑马点评_第33张图片
  • 缓存的作用
    Redis安装使用配置以及缓存项目-黑马点评_第34张图片
  • 降低后端负载
  • 提高读写效率
  • 降低响应时间

Redis安装使用配置以及缓存项目-黑马点评_第35张图片

给店铺类型查询业务添加缓存

Redis安装使用配置以及缓存项目-黑马点评_第36张图片

缓存更新策略

Redis安装使用配置以及缓存项目-黑马点评_第37张图片
Redis安装使用配置以及缓存项目-黑马点评_第38张图片

Redis安装使用配置以及缓存项目-黑马点评_第39张图片
Redis安装使用配置以及缓存项目-黑马点评_第40张图片

补充 数据一致性

数据一致性是什么

怎么理解数据一致性

Redis安装使用配置以及缓存项目-黑马点评_第41张图片

缓存击穿

原因

缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。

热点key
高并发访问key
缓存失效

Redis安装使用配置以及缓存项目-黑马点评_第42张图片
Redis安装使用配置以及缓存项目-黑马点评_第43张图片

解决方案

Redis安装使用配置以及缓存项目-黑马点评_第44张图片

  • 互斥锁
  • 逻辑过期

Redis安装使用配置以及缓存项目-黑马点评_第45张图片
案例

Redis安装使用配置以及缓存项目-黑马点评_第46张图片

缓存穿透

Redis安装使用配置以及缓存项目-黑马点评_第47张图片
Redis安装使用配置以及缓存项目-黑马点评_第48张图片

Redis安装使用配置以及缓存项目-黑马点评_第49张图片

  • 缓存null值
  • 布隆过滤
  • 增加id复杂度
  • 做好数据基础格式校验

原因

解决方案

缓存雪崩

原因

缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。

Redis安装使用配置以及缓存项目-黑马点评_第50张图片

解决方案

  • 给不同的Key的TTL添加随机值
  • 利用Redis集群提高服务的可用性
  • 给缓存业务添加降级限流策略
  • 给业务添加多级缓存

总结

分类
缓存穿透
缓存击穿
缓存雪崩

缓存封装工具

Redis安装使用配置以及缓存项目-黑马点评_第51张图片

优惠券秒杀业务

全局唯一ID和自增

Redis安装使用配置以及缓存项目-黑马点评_第52张图片

Redis安装使用配置以及缓存项目-黑马点评_第53张图片
Redis安装使用配置以及缓存项目-黑马点评_第54张图片
Redis安装使用配置以及缓存项目-黑马点评_第55张图片

Redis安装使用配置以及缓存项目-黑马点评_第56张图片

  • 优惠券秒杀下单

Redis安装使用配置以及缓存项目-黑马点评_第57张图片

Redis安装使用配置以及缓存项目-黑马点评_第58张图片
Redis安装使用配置以及缓存项目-黑马点评_第59张图片
Redis安装使用配置以及缓存项目-黑马点评_第60张图片

超卖问题

Redis安装使用配置以及缓存项目-黑马点评_第61张图片
Redis安装使用配置以及缓存项目-黑马点评_第62张图片

一人一单

分布式锁

Redis安装使用配置以及缓存项目-黑马点评_第63张图片
Redis安装使用配置以及缓存项目-黑马点评_第64张图片

Redis实现分布式锁

Redis安装使用配置以及缓存项目-黑马点评_第65张图片

需求:定义一个类,实现下面接口,利用Redis实现分布式锁功能。

Redis安装使用配置以及缓存项目-黑马点评_第66张图片
Redis安装使用配置以及缓存项目-黑马点评_第67张图片

Redis安装使用配置以及缓存项目-黑马点评_第68张图片
Redis安装使用配置以及缓存项目-黑马点评_第69张图片
Redis安装使用配置以及缓存项目-黑马点评_第70张图片

Redis的Lua脚本

Redis安装使用配置以及缓存项目-黑马点评_第71张图片
Redis安装使用配置以及缓存项目-黑马点评_第72张图片
Redis安装使用配置以及缓存项目-黑马点评_第73张图片
Redis安装使用配置以及缓存项目-黑马点评_第74张图片

Redis安装使用配置以及缓存项目-黑马点评_第75张图片
Redis安装使用配置以及缓存项目-黑马点评_第76张图片

Redisson

Redisson原理
Redis安装使用配置以及缓存项目-黑马点评_第77张图片
Redis安装使用配置以及缓存项目-黑马点评_第78张图片

Redis安装使用配置以及缓存项目-黑马点评_第79张图片

优化秒杀

Redis安装使用配置以及缓存项目-黑马点评_第80张图片

Redis安装使用配置以及缓存项目-黑马点评_第81张图片

Redis安装使用配置以及缓存项目-黑马点评_第82张图片

Redis消息队列实现异步秒杀

Redis安装使用配置以及缓存项目-黑马点评_第83张图片

Redis安装使用配置以及缓存项目-黑马点评_第84张图片

List的消息队列

Redis安装使用配置以及缓存项目-黑马点评_第85张图片
Redis安装使用配置以及缓存项目-黑马点评_第86张图片

基于PubSub的消息队列

Redis安装使用配置以及缓存项目-黑马点评_第87张图片

Redis安装使用配置以及缓存项目-黑马点评_第88张图片
Redis安装使用配置以及缓存项目-黑马点评_第89张图片
Redis安装使用配置以及缓存项目-黑马点评_第90张图片
Redis安装使用配置以及缓存项目-黑马点评_第91张图片
Redis安装使用配置以及缓存项目-黑马点评_第92张图片
在这里插入图片描述

达人探店业务

笔记功能

Redis安装使用配置以及缓存项目-黑马点评_第93张图片
Redis安装使用配置以及缓存项目-黑马点评_第94张图片
Redis安装使用配置以及缓存项目-黑马点评_第95张图片
Redis安装使用配置以及缓存项目-黑马点评_第96张图片

点赞功能

Redis安装使用配置以及缓存项目-黑马点评_第97张图片
Redis安装使用配置以及缓存项目-黑马点评_第98张图片

点赞排行榜

Redis安装使用配置以及缓存项目-黑马点评_第99张图片
Redis安装使用配置以及缓存项目-黑马点评_第100张图片

关注和取消关注

Redis安装使用配置以及缓存项目-黑马点评_第101张图片

Redis安装使用配置以及缓存项目-黑马点评_第102张图片

关注推送

Redis安装使用配置以及缓存项目-黑马点评_第103张图片
Redis安装使用配置以及缓存项目-黑马点评_第104张图片

Redis安装使用配置以及缓存项目-黑马点评_第105张图片
Redis安装使用配置以及缓存项目-黑马点评_第106张图片
Redis安装使用配置以及缓存项目-黑马点评_第107张图片
Redis安装使用配置以及缓存项目-黑马点评_第108张图片

Feed流分页问题

附近商户

Redis主从复制和哨兵模式

概念

  • 主从复制

Redis主从复制配置

redis主从复制

  • 哨兵模式
    何谓哨兵
  • 发布订阅
    发布订阅01

发布订阅02

你可能感兴趣的:(Linux服务器,redis,数据库,缓存)