
redis
工作中对redis的总结
Good LA
这个作者很懒,什么都没留下…
展开
-
关于推荐场景的一些思考
背景由于用户数的飙升,推荐使用的技术栈也在不断升级,以满足更高并发和更大数据量的推荐场景。推荐相关的原始数据从小几十万到几百万,到几千万,再到上亿。推荐1.0从全库的用户数据中load出满足条件的用户,在jvm做计算,得到推荐结果。随着用户数量的上升,满足条件的用户越来越多,导致计算量越来越大,性能逐渐变低推荐2.0一边从数据库中load出满足条件的用户,一边用sql在数据库做计算,直接得到推荐结果。利用索引,性能提升五倍左右。随着用户量继续上升,性能也在逐渐变低。推荐3.0将数据库推荐相原创 2022-04-26 14:04:52 · 2441 阅读 · 0 评论 -
Redis的线程模型
Redis线程模型Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器(file event handler)。它的组成结构为4部分:多个套接字、IO多路复用程序、文件事件分派器、事件处理器。因为文件事件分派器队列的消费是单线程的,所以Redis才叫单线程模型。文件事件处理器使用 I/O 多路复用(multiplexing)程序来同时监听多个套接字, 并根据套接字目前执行的任务来为套接字关联不同的事件处理器。当被监听的套接字准备好执行连接应答(accept)、读取(原创 2021-12-31 15:13:54 · 146 阅读 · 0 评论 -
Redis底层数据结构
Redis常用数据类型Redis常用数据类型包括:String、Hash、List、Set、ZSetredis的数据模型dictEntry在一些编程语言中,键值对的数据结构被称为字典,而在 Redis 中,会给每一个 key-value 键值对分配一个字典实体,就是“dicEntry”。dicEntry 包含三部分: key 的指针、val 的指针、next 指针,next 指针指向下一个 dicteEntry 形成链表,这个 next 指针可以将多个哈希值相同的键值对链接在一起,通过链地址法来解决原创 2021-12-30 22:53:13 · 1247 阅读 · 0 评论 -
基于java实现自定义布隆过滤器一
布隆过滤器是什么布隆过滤器底层基于bitmap,根据hash函数结果维护。优点布隆过滤器解决大数据量的”是否存在“问题很好用,能节省大量空间。缺点布隆过滤器存在一定的误判率,只能确认数据一定不存在,无法确认数据是否一定存在。对于要求精确的数据不适用。布隆过滤器不支持扩展。随着数据量的上升,误判率会跟着上升。此时如果要扩展布隆过滤器,只能新建一个新的布隆过滤器。基于redis实现布隆过滤器redis提供setbit等命令,允许对bitmap进行位级别的操作。借助redis提供的接口,不原创 2021-06-23 21:42:09 · 241 阅读 · 0 评论 -
对redis的一次回眸之zset(五)
sorted_setzadd key score member [score member …],在物理内存,根据分值从小到大,从左往走排,存储地址不随着命令发生变化。zcount key min max 查找分值从min到max的数量zscore key member 取得key下某个元素的分值zincrby key increment member 对某个key下的元素的分值做加法zrange key start stop 根据下标,取得从start到stop到元素zrangebyscore原创 2021-05-17 23:39:12 · 150 阅读 · 0 评论 -
对redis的一次回眸之set(四)
set常用命令sadd key member [member …]smembers keysinter key [key …]sinterstore destination key [key …]sunion key [key …]sdiff key [key …]总结set有去重功能,适合存储不重复key的需求。set有较多的集合操作,比如求两个集合的差集、并集。...原创 2021-05-17 23:07:26 · 77 阅读 · 0 评论 -
对redis的一次回眸之hash(三)
hash常用命令hset key filed value [filed value …]hget key fieldhincrby key filed increment总结hash特别适合存储对象原创 2021-05-17 22:42:11 · 82 阅读 · 0 评论 -
对redis的一次回眸之list(二)
list基本命令:lpush key arg…注意顺序:127.0.0.1:6379> lpush l2 a b c d(integer) 4127.0.0.1:6379> LPOP l2"d"127.0.0.1:6379> LPOP l2 31) "c"2) "b"3) "a"127.0.0.1:6379> LPOP l2 3(nil)基本命令lpush 往list添加一个元素lpop 从list取出一个元素,该元素会从list删除lrange 查原创 2021-05-17 00:43:18 · 109 阅读 · 0 评论 -
对redis的一次回眸之String(一)
Stringtype key 获取key类型string: append、incr、getset、get、set、msetnxlisthashsetzsetobject encoding key 获取value值的类型empstr 字符小于等于44字节时int 字符是数字,当字符小于20个字符时,为int类型,当大于等于20并小于等于44字节时,为empstr类型,当大于44字节时,转化为44字节。row 字符大于44字节时二进制安全redis只接收字节流,如果客户端要存数原创 2021-05-17 00:11:56 · 123 阅读 · 0 评论 -
java实现redis消息订阅与发布(一)
redis消息订阅与发布redis除了做缓存外,还提供了消息订阅发布的功能。redis是绝大多数系统都会引入的中间件,如果项目中仅仅是一小块部分需要消息订阅与发布功能,特地为此引入消息中间件有点太重了,因此,使用redis做消息订阅与发布性价比更高。Java实现redis的订阅与发布@Configuration@EnableCachingpublic class RedisConfiguration extends CachingConfigurerSupport { /**原创 2021-05-16 01:59:20 · 2006 阅读 · 0 评论