随笔分类 - Redis
1
摘要:1、ACL 1、简介 Redis ACL是Access Control List(访问控制列表)的缩写,该功能允许根据可以执行的命令和可以访问的键来限制某些连接。 在Redis 5版本之前,Redis 安全规则只有密码控制 还有通过rename 来调整高危命令比如 flushdb , KEYS* ,
阅读全文
摘要:1、问题描述 随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的Java API并不能提供分布式锁的能力。为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式
阅读全文
摘要:1、问题描述key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。缓存雪崩与缓存击穿的区别在于这里针对很多key缓存,前者则是某一个key正常访问缓存失效瞬间2、解决方案缓存失效
阅读全文
摘要:1、问题描述key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。2、解决方案key可能会在某些时间点被超高并发地访问,是一种非常“热点”的数据。这个时候,需要考虑一个问题:缓存
阅读全文
摘要:1、问题描述key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会压到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。2、解决方案 一个一定不存在缓存及查询不到的数据,由于缓存是不命中时被
阅读全文
摘要:1、什么是集群 Redis 集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N。Redis 集群通过分区(partition)来提供一定程度的可用性(availability): 即使集群中有一部分节点失效或者无法进行通讯, 集
阅读全文
摘要:1、什么是哨兵模式反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库2、怎么玩1、调整主从服务器为一主二仆模式,6379主、6380、6381仆2、自定义的/myredis目录下新建sentinel.conf文件,名字绝不能错3、配置哨兵,填写内容sentinel
阅读全文
摘要:1、复制原理Slave启动成功连接到master后会发送一个sync命令Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令, 在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步全量复制:而slave服务在接收到数据库文件数据后,将其存盘
阅读全文
摘要:1、创建/myredis文件夹2、复制redis.conf配置文件到文件夹中3、配置一主两从,创建三个配置文件redis6379.confredis6380.confredis6381.conf4、在三个配置文件中写入以下内容include /myredis/redis.conf pidfile /
阅读全文
摘要:1、悲观锁悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。2、
阅读全文
摘要:单独的隔离操作 事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断 没有隔离级别的概念 队列中的命令没有提交之前都不会实际被执行,因为事务提交前任何指令都不会被实际执行 不保证原子性 事务中如果有一条命令执行失败,其后的命令仍然会被执行,没有回滚
阅读全文
摘要:Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 Redis事务的主要作用就是串联多个命令防止别的命令插队。 1、Multi、Exec、discard从输入Multi命令开始,输入的命令都会依次进入命令队列中,
阅读全文
摘要:public class PhoneCode { public static void main(String[] args) { //模拟验证码发送 verifyCode("12345678901"); //getRedisCode("12345678901","012170"); } //3 校
阅读全文
摘要:1、依赖导入<!-- redis --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><!--
阅读全文
摘要:1、Bitmaps1、简介现代计算机用二进制(位) 作为信息的基础单位, 1个字节等于8位, 例如“abc”字符串是由3个字节组成, 但实际在计算机存储时将其用二进制表示, “abc”分别对应的ASCII码分别是97、 98、 99, 对应的二进制分别是01100001、 01100010和0110
阅读全文
摘要:1、Jedis所需要的jar包<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.2.0</version></dependency>2、连接Rdis注意事项禁用Linux的防
阅读全文
摘要:1、什么是发布和订阅Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。 Redis 客户端可以订阅任意数量的频道。 2、Redis的发布和订阅客户端可以订阅频道如下图当给这个频道发布消息后,消息就会发送给订阅的客户端3、实现打开
阅读全文
摘要:1、String1、简介String类型是二进制安全的,意味Redis的String可以包含任何数据,比如jpg图片或者序列化的对象一个Redis字符串中value最多可以是512M2、常用命令set <key> <value> 添加键值对get <key> 查询对应键值 append <key>
阅读全文
摘要:1,前台启动(不推荐)redis-server2、后台启动进入解压后的redis-6.2.1文件夹cd /opt/redis-6.2.1复制redis.conf文件到etc目录,名字文redis.confcp redis.conf /etc/redis.conf将文件中daemonize no改为y
阅读全文
摘要:1、先安装gcc环境,因为Redis需要在C语言环境下编译2、Redis安装1、使用以下命令将预先上传的Redis压缩包解压tar -zxvf redis-6.2.1.tar.gz 2、进入解压后的redis-6.2.1文件夹cd redis-6.2.1 3、将Redis编译为C文件make4、完成
阅读全文
1