
Redis
Redis
静谧之心
专业摩的佬
业余吉他手
退役喷子
拍照小法师
展开
-
从RedisTemplate, StringRedisTemplate 的序列化异同引发的思考
长话短说:StringRedisTemplate, RedisTemplate 都是redis在Spring中的封装的模板工具类StringRedisTemplate 从名字看, 是用来存取String的RedisTemplate 从名字上看, 是什么都能干, 包含上面的两种实现都会将key使用对应的不同的序列化实现类实现因为是不用的序列化实现类, 所以出现了一个现象:比如在StringRedisTemplate中 将 a --> value 存入但是在 RedisTemplate 中原创 2021-04-27 17:52:23 · 6067 阅读 · 9 评论 -
通过incr命令也可以实现redis分布式锁
/** * 从redis获取分布式锁 * * @return workerId */ public static Long lockTest() throws InterruptedException { // 尝试获取锁 原理: incr命令只有在第一次进入空节点时会返回1. Long res = RedisClientContext.getInstance().getStringRedisTemplate().opsFo.原创 2021-04-26 15:58:11 · 2723 阅读 · 3 评论 -
Redis主从复制 全量复制 部分复制详解
概述redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数...原创 2020-04-29 09:44:56 · 798 阅读 · 0 评论 -
RDB与AOF孰优孰劣?
RDB 与 AOFRDB 基于内存快照,有两种方式 save 和 bgsave,前者会阻塞 redis 服务,后者是异步 fork 子进程不影响主进程提供服务。大部分情况,我们会通过配置时间间隔触发 RDB 文件写入。RDB 文件中保存的是 redis 内存中所有的数据一份快照。优点是:相同的数据量下,rdb 文件要小于 aof 文件,且恢复速度要快于 aofrdb 文件中是整个数据的完...原创 2020-04-28 11:23:43 · 2189 阅读 · 1 评论 -
Redis持久化策略之AOF
什么是 AOF 持久化策略?AOF 即 append only file,当 redis 采用这这种数据持久化策略的时候,每当 redis 服务器收到一条更新命令时,操作结束之后会将这条命令添加到 aof 内存缓冲区,特定的时间下刷新缓冲区到磁盘文件中,也就是我们的 aof 文件。默认的 redis 启动配置文件中,会有这么两条配置:appendonly 指定 redis 是否启用 AOF...原创 2020-04-28 10:44:24 · 1125 阅读 · 0 评论 -
Redis之HyperLogLog详解与优缺点
简介:HyperLogLog是一种算法,并非redis独有目的是做基数统计,故不是集合,不会保存元数据,只记录数量而不是数值。耗空间极小,支持输入非常体积的数据量核心是基数估算算法,主要表现为计算时内存的使用和数据合并的处理。最终数值存在一定误差redis中每个hyperloglog key占用了12K的内存用于标记基数(官方文档)pfadd命令并不会一次性分配12k内存,而是随着基...原创 2020-04-28 03:49:16 · 3677 阅读 · 0 评论 -
Redis 批量操作之 pipeline
pipeline简介非pipeline:client一个请求,redis server一个响应,期间client阻塞Pipeline:redis的管道命令,允许client将多个请求依次发给服务器(redis的客户端,如jedisCluster,lettuce等都实现了对pipeline的封装),过程中而不需要等待请求的回复,在最后再一并读取结果即可。单机版//换成真实的redis实例J...原创 2020-04-27 11:12:17 · 694 阅读 · 0 评论 -
Redis性能瓶颈分析之慢查询
Redis命令Redis 客户端执行命令分四个部分:发送命令命令排队命令执行返回结果Redis 的慢查询只统计步奏3)的时间,所以没有慢查询并不代表客户端没有超时的问题慢查询参数配置Redis 通过 slowlog-log-slower-than 和 slowlog-max-len 分别配置慢查询的阈值,以及慢查询记录的日志长度。 slowlog-log-slower-than...原创 2020-04-27 09:10:24 · 1025 阅读 · 0 评论 -
Jedis非线程安全测试以及原因分析
明明server端对数据的读写时单线程,为什么还要用链接池呢?经过一轮的百度,得知这里面有两个原因:主要原因:redis的性能瓶颈主要时网络通讯——网络通讯速度比redis处理速度要慢许多。单客户端会导致,网络通讯的时间里,redis处于闲暇,无法发挥其处理能力;不那么主要(个人认为也很主要)原因:jedis非线程安全。但是百度到的帖子和博客,均没有给出靠谱的测试程序去证明这个说法。...原创 2020-04-27 06:33:17 · 1033 阅读 · 1 评论 -
Redis之zset详解
sorted set 是有序集合,它在set 的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,会自动重新按新的值调整顺序。可以理解了有两列的mysql 表,一列存value,一列存顺序。操作中key 理解为sorted set 的名字。Sorted Set 类型数据操作指令简介zadd key score member 添加元素到集合,元素在集合中存在则更新对应...原创 2020-04-27 05:30:55 · 787 阅读 · 0 评论 -
Redis之set详解
set类型介绍和C++或Java编程语言中的set类型一样,Redis中的set类型也是一种无序集合,集合中的元素没有先后顺序,而且具有确定性、唯一性的特点。相比于我们前面介绍的list类型,set支持更加丰富的操作,比如求交、并、差集等。set类型相关命令1、sadd命令sadd命令用来往集合中添加一个或多个元素,但是如果该元素已经在集合中则忽略之。操作成功后返回新成功添加到集合中的元素...原创 2020-04-26 09:24:45 · 2119 阅读 · 0 评论 -
Redis之list详解
列表类型简介列表(list)用于存储多个有序的字符串。列表是一种比较灵活的数据结构,可以充当栈和队列的角色,在实际开发上有很多应用场景列表的特点:列表中的元素是有序的,可以通过索引下标来获取某个元素或者某个范围内的元素列表列表中的元素是可以重复的命令:添加操作rpush key value [value …] 从右边插入元素127.0.0.1:6379> rpush te...原创 2020-04-26 08:23:21 · 990 阅读 · 1 评论 -
Redis之Hash类型详解
hash的常用命令hsethset key field value将哈希表key中的域field的值设为value如果key不存在,一个新的哈希表被创建并进行HSET操作如果field是哈希表中的一个新建域,并且值设置成功,返回1如果域field已经存在于哈希表中,旧值将被覆盖,返回0hsetnxhsetnx key field value将哈希表key中的域field的...原创 2020-04-25 14:41:24 · 856 阅读 · 0 评论