随笔分类 - 17-Redis
摘要:源码本质就是Excute执行RedisBloom指令 的封装了一下而已。 public static class RedisBloomExtensions { public static async Task BloomReserveAsync(this IDatabaseAsync db, Red
阅读全文
摘要:批处理 StackExchange.Redis中对于连续多次的缓存等请求,我们会多次调用相关的函数来执行Redis命令。然而这种方式有个弊端就是每一次的请求都需要等待返回结果,如果在网络状况不好的情况下,可能会造成不好的用户体验。 StackExchange.Redis里面没有找到pipe指令,后来
阅读全文
摘要:发布订阅: Redis 发布订阅 (pub/sub) 是一种消息通信模式,可以用于消息的传输,Redis 的发布订阅机制包括三个部分,发布者,订阅者和 Channel。适宜做在线聊天、消息推送等。 发布者和订阅者都是 Redis 客户端,Channel 则为 Redis 服务器端,发布者将消息发送到
阅读全文
摘要:ConnectionMultiplexer 类型公开了多个事件: ConfigurationChanged 当 ConnectionMultiplexer 里面的连接配置被更改后触发 ConfigurationChangedBroadcast 通过发布/订阅功能接受到一个重新配置的消息的时候;这通常
阅读全文
摘要:List数据类型 它是一个双向链表,支持左进、左出、右进、右出,所以它即可以充当队列使用,也可以充当栈使用。 (1). 队列:先进先出, 可以利用List左进右出,或者右进左出(ListLeftPush和ListRightPop配合 、 ListRightPush和ListLeftPop配合) (2
阅读全文
摘要:Set数据类型 Api (1).SetAdd:添加数据,可以单独1个key-1个value,也可以1个key-多个value添加 (2).SetLength:求key集合的数量 (3).SetContains:判断key集合中是否包含指定值 (4).SetRandomMember:随机获取指定key
阅读全文
摘要:String类型 Api (1).StringSet:写入数据,如果数据已经存在,则覆盖;可以一次性存入1个key-value,也可以一次性存入多个Key-value集合,并且可以设置其过期时间。 (2).StringGet:读取数据,可以一次性读取一个key的value,也可以一次性读取多个key
阅读全文
摘要:# 连接对象ConnectionMultiplexer `ConnectionMultiplexer`是`StackExchange.Redis`的核心对象,`ConnectionMultiplexer` 应被多个调用之间共享使用。不需要为每个操作创建一个 `ConnectionMultiplexe
阅读全文
摘要:Redis是一个高效的内存数据库,它支持包括String、List、Set、SortedSet和Hash等数据类型的存储,在Redis中通常根据数据的key查询其value值,Redis没有条件查询,在面对一些需要分页或排序的场景时(如评论,时间线),Redis就不太好不处理了。 前段时间在项目中需
阅读全文
摘要:秒杀案例介绍 秒杀需要校验优惠券库存、每个用户只能使用一个优惠券,校验完成后下单。常规流程需要加锁,并发量低、数据库压力大。 如何优化? 将秒杀流程分为两个阶段,并且使用redis 第一阶段 校验优惠券库存、校验用户是否已使用优惠券。校验通过后扣减库存、记录使用优惠券的用户id。整个操作应该保证原子
阅读全文
摘要:缓存更新策略 设置缓存的过期时间,一致性差 主动更新,更新数据库时主动更新缓存 建议主动更新为主,过期淘汰兜底,因为主动更新也不能完全保证一致性 主动更新策略 Cache Aside Pattern 由缓存的调用者,在更新数据库的同时更新缓存 Read/Write Through Pattern 缓
阅读全文
摘要:什么是布隆过滤器 布隆过滤器(Bloom Filter)是一种比较巧妙的概率型数据结构,它可以告诉你某种东西一定不存在或者可能存在。当布隆过滤器说,某种东西存在时,这种东西可能不存在;当布隆过滤器说,某种东西不存在时,那么这种东西一定不存在。 布隆过滤器相对于Set、Map 等数据结构来说,它可以更
阅读全文
摘要:缓存穿透 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。 解决方案 缓存空对象 布隆过滤 增强id的复杂度,避免被猜测id规律 做好数据的基础格式校验 加强用户权限校验 做好热点参数的限流 缓存雪崩 缓存雪崩是指在同一时段大量的缓存key同时失
阅读全文
摘要:# 介绍 Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。 Redis通过内置的 Lua 解释器,可以使用 `EVAL `命令对 Lua 脚本进行求值。在lua脚本中可以通过两个不同的函数调用redis命
阅读全文