功能实现02
2.功能01-短信登录
2.1基于Session实现登录
2.1.1思路分析
2.1.2代码实现
2.1.2.1发送短信验证码
发送短信验证码:
发送验证码的接口为:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手机号>
一、redis主从复制
主从复制:是存储数据的服务结构
主服务器:接受客户端连接的服务器
从服务器:自动与主服务器保持数据一致的服务器
配置主从复制
1、环境准备
主服务器 主机名:master IP地址:192.168.11.101/24
从服务器 主机名:node01
1. 为什么要持久化
Redis是基于内存存储的数据库,如果遇到服务重启或者崩溃,内存中的数据将会被清空。所以为了确保数据安全性和可靠性,我们需要将内存中的数据持久化到磁盘上。
持久化不仅可以防止由于系统故障、重启或者其他原因导致的数据丢失。还可以用于备份、数据恢复和迁移等操作。
2. Redi
功能02-商铺查询缓存
3.商铺详情缓存查询
3.1什么是缓存?
缓存就是数据交换的缓冲区(称作Cache),是存储数据的临时地方,一般读写性能较高。
缓存的作用:
降低后端负载
提高读写效率,降低响应时间
缓存的成本:
数据一致性成本
代码维护成本
运维成本
3.2需求说明
如下,当我们点击商店
简介
从数据类型上体现就是,同一个数据类型,在不同的情况下会使用不同的编码类型,底层所使用的的数据结构也不相同。
字符串对象
字符串对象的编码可以是 int、raw 和 embstr 三者之一。
embstr 编码是专门用于保存简短字符串的一种优化编码方式,与 raw 编码会调用两次内存分配函数
功能02-商铺查询缓存02
知识补充
(1)缓存穿透
https://blog.csdn.net/qq_45637260/article/details/125866738
缓存穿透(cache penetration)是指用户访问的数据既不在缓存当中,也不在数据库中。出于容错的考虑,如果从底
功能02-商铺查询缓存03
3.功能02-商铺查询缓存
3.6封装redis工具类
3.6.1需求说明
基于StringRedisTemplate封装一个工具列,满足下列需求:
方法1:将任意Java对象序列化为json,并存储在string类型的key中,并且可以设置TTL过期时间
方法2:将任
《Redis设计与实现》读书笔记
简单动态字符串
SDS的定义
结构:
buf数组:用于保存字符串
len属性:记录SDS中保存字符串的长度
free属性:记录buf中未使用字节数量
遵循C字符串以空字符串结尾的惯例,保存空字符串的字节不计入长度
SDS与C字符串的区别
常数复杂度获取字符串长度
1. Redis集群简介
1.1 什么是Redis集群
Redis集群是一种通过将多个Redis节点连接在一起以实现高可用性、数据分片和负载均衡的技术。它允许Redis在不同节点上同时提供服务,提高整体性能和可靠性。根据搭建的方式和集群的特性,Redis集群主要有三种模式:主从复制模式(Mast
一、主从Redis部署(docker)
首先,我准备了两台linux,一台准备当作master,ip是192.168.241.128,另一台是当作slave,ip是192.168.241.129。
1. 安装redis
docker pull redis
2. 下载对应版本的redis.conf
一、Redis Cluster 工作原理
在引入哨兵机制后,解决了Redis主从架构Master故障时的主从切换问题,保证了Redis服务可用性。但依旧无法解决单机节点出现的写入性能瓶颈(网卡速率、单机内存容量、并发数量)
1、早期为解决单机性能瓶颈问题采用的解决方案:
1、客户端分片:由客户端程
1.检测虚拟机环境
1.1 bit检测命令:getconf LONG_BIT(建议使用64bit做开发)
1.2 gcc环境检测:gcc -v
如果不具备gcc环境,则使用yum -y install gcc- c++命令进行c++环境的安装
2.开始安装
2.1 下载redis:
进入官网找
功能03-优惠券秒杀01
4.功能03-优惠券秒杀
4.1全局唯一ID
4.1.1全局ID生成器
每个店铺都可以发布优惠券:
当用户抢购时,就会生成订单,并保存到tb_voucher_order这张表中。订单表如果使用数据库的自增id就存在一些问题:
id的规律性太明显:用户可以根据id猜测一些信
功能03-优惠券秒杀02
4.功能03-优惠券秒杀
4.4一人一单
4.4.1需求分析
要求:修改秒杀业务,要求同一个优惠券,一个用户只能下一单。
在之前的做法中,加入一个对用户id和优惠券id的判断,如果在优惠券下单表中已经存在,则表示该用户对于这张优惠券已经下过单了,不允许重复购买
4.4.2
背景:在搜索的时候经常会有一种场景就是忽略大小写,不管你输入的是全大写还是全小写还是大小写混合,希望都能够搜索出结果。
解决思路:Elasticsearch中的lowercase normalizer将文本转换为小写,并将其作为规范形式存储在索引中。这可以确保在搜索和比较文本时忽略大写字母的差异,
功能03-优惠券秒杀03
4.功能03-优惠券秒杀
4.6Redisson的分布式锁
Redis分布式锁—Redisson+RLock可重入锁实现篇
4.6.1基于setnx实现的分布式锁问题
我们在4.5自己实现的分布式锁,主要使用的是redis的setnx命令,它仍存在如下问题:
4.6.
前言
平时的工作中,由于生产环境中的项目是需要部署在多台服务器中的,所以经常会面临解决分布式场景下数据一致性的问题,那么就需要引入分布式锁来解决这一问题。
针对分布式锁的实现,目前比较常用的就如下几种方案:
基于数据库实现分布式锁
基于 Redis 实现分布式锁 【本文】
基于 Zookeeper
1:普通的Redis分布式锁的缺陷我们在网上看到的redis分布式锁的工具方法,大都满足互斥、防止死锁的特性,有些工具方法会满足可重入特性。如果只满足上述3种特性会有哪些隐患呢?redis分布式锁无法自动续期,比如,一个锁设置了1分钟超时释放,如果拿到这个锁的线程在一分钟内没有执行完毕,那么这个锁
少点代码,多点头发
本文已经被GitHub收录,欢迎大家踊跃star 和 issues。
https://github.com/midou-tech/articles
入职第一周,我被坑了
最近刚入职新公司,本来想着这刚来新公司,一般都是熟悉熟悉公司同事,看看组内工程文档,找几个demo自己练
环境:Docker + ( Redis:5.0.5 * 3 )
1、拉取镜像
docker pull redis:5.0.5
2、创建Redis容器
创建三个 redis 容器:
redis-node1:6379
redis-node2:6380
redis-node3:6381
dock