- 博客(73)
- 收藏
- 关注
原创 Redis 高级数据结构 GEO
Redis 3.2版本提供了GEO(地理信息定位)功能,支持存储地理位置信息用来实现诸如附近位置、摇一摇这类依赖于地理位置信息的功能。 地图元素的位置数据使用二维的经纬度表示,经度范围(-180, 180],纬度范围(-90,90],纬度正负以赤道为界,北正南负,经度正负以本初子午线(英国格林尼治天文台) 为界,东正西负。 业界比较通用的地理位置距离排序算法是GeoHash 算法,Redis 也使用GeoHash算法。
2023-06-06 15:28:53 601
原创 Redis 高级数据结构 HyperLogLog
HyperLogLog(Hyper [ ˈhaɪpə(r) ]) 并不是一种新的数据结构(实际类型为字符串类型) ,而是一种基数算法 , 通过HyperLogLog可以利用极小的内存空间完成独立总数的统计,数据集可以是IP、Email、ID等。如果你负责开发维护一个大型的网站,有一天产品经理要网站每个网页每天的 UV 数据,然后让你来开发这个统计模块,你会如何实现?如果统计 PV 那非常好办,给每个网页一个独立的 Redis 计数器就可以了,这个计数器的 key 后缀加上当天的日期。
2023-06-06 15:27:20 537
原创 生成永不重复的编号
public class InvoiceNumberUtils {// 服务器维护这个数字// 每次分配之后+1// cnt可以从0开始// 你也可以指定一个开始的数字public static long cnt = 0L;private static final char[] chars = new char[] { '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g
2022-05-24 16:52:28 583
原创 redis缓存淘汰策略原理分析
长期将Redis作为缓存使用,难免会遇到内存空间存储瓶颈,当Redis内存超出物理内存限制时,内存数据就会与磁盘产生频繁交换,使Redis性能急剧下降。此时如何淘汰无用数据释放空间,存储新数据就变得尤为重要了。解决这个问题就涉及到缓存系统的一个重要机制,即缓存数据的淘汰机制。Redis.conf中配置淘汰策略#设置Redis 内存大小的限制,我们可以设置maxmemory ,当数据达到限定大小后,会选择配置的策略淘汰数据 maxmemory 300mb #设置Redis的淘汰策略。 ....
2022-05-03 18:19:13 51
原创 Redis的内存淘汰策略
过期策略1、定期删除Redis 会将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定期遍历这个字典来删除到期的 key。Redis 默认会每秒进行十次过期扫描(100ms一次),过期扫描不会遍历过期字典中所有的 key,而是采用了一种简单的贪心策略。1.从过期字典中随机 20 个 key;2.删除这 20 个 key 中已经过期的 key;3.如果过期的 key 比率超过 1/4,那就重复步骤 1; redis默认是每隔 100ms就随机抽取一些设置了过期时间的key
2022-04-16 18:43:27 23
原创 布隆过滤器(Bloom Filter)
简介 布隆过滤器(Bloom Filter)是由布隆在1970年提出的。它实际上是一个很长的二进制向量(位图)和一系列随机映射函数(哈希函数)。 布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率而且删除困难。...
2022-04-03 19:30:59 34
原创 Linux下安装 ---布隆过滤器(RedisBloom)
安装1、下载RedisBloom wget -c https://github.com/RedisBloom/RedisBloom/archive/refs/tags/v2.2.6.zip2、需要解压zip文件,安装 yum install unzip 已安装请忽略3、unzip v2.2.6.zip 执行解压命令4、cd RedisBloom-2.2.6/ 注意 一定切换到这个目录下5、make 执行make6、执行 ll 命令 可以看到生成了 redisbloom.
2022-04-02 21:36:27 90
原创 Redis的事务
Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证: 1、事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 2、事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。关于Redis的事务有几点说明Redis的事务仅仅是保证事务里的操作会被连续独占的执行,因为是单线程架构,在执行完事务内所有指令前是不可能再去同时执行其他客户端的请求。Redis的事务没有隔离级别的概念,因为事务提交前
2022-03-29 20:46:38 22
原创 Redis PubSub发布订阅
简介 Redis PubSub 模块又称发布订阅者模式,是一种消息传递系统,实现了消息多播功能。发布者(即发送方)发送消息,订阅者(即接收方)接收消息,而用来传递消息的链路则被称为 channel。在 Redis 中,一个客户端可以订阅任意数量的 channel(可译为频道)。 消息多播:生产者生产一次消息,中间件负责将消息复制到多个消息队列中,每个消息队列由相应的消费组进行消费,这是分布式系统常用的一种解耦方式。流程示意图发布订阅模式的操作指令1、subscribe : 订阅消
2022-03-29 17:27:47 32
原创 Redis 五大数据类型 - Hash类型
对Hash类型的操作命令1、hset:设置值。格式:hset key field value 127.0.0.1:6379> hset k1 name zhangsan (integer) 1 127.0.0.1:6379> hset k1 age 18 (integer) 12、hget:获取值。格式:hget key field 127.0.0.1:6379> hget k1 name "zhangsan" 127.0.0.1:6379> hget k1 a
2022-03-25 17:02:08 25
原创 Redis 五大数据类型 - Set类型
对Set类型的操作命令1、sadd:添加元素,格式:sadd key member [member…] 127.0.0.1:6379> sadd myset v1 v2 v3 (integer) 3 127.0.0.1:6379> sadd myset v1 (integer) 02、smembers:获取集合中所有元素,格式:SMEMBERS key 127.0.0.1:6379> SMEMBERS myset 1) "v2" 2) "v1" 3
2022-03-25 16:36:51 360
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人