随笔分类 -  17-Redis

摘要:源码本质就是Excute执行RedisBloom指令 的封装了一下而已。 public static class RedisBloomExtensions { public static async Task BloomReserveAsync(this IDatabaseAsync db, Red 阅读全文
posted @ 2022-04-07 21:05 .Neterr 阅读(142) 评论(0) 推荐(0)
摘要:批处理 StackExchange.Redis中对于连续多次的缓存等请求,我们会多次调用相关的函数来执行Redis命令。然而这种方式有个弊端就是每一次的请求都需要等待返回结果,如果在网络状况不好的情况下,可能会造成不好的用户体验。 StackExchange.Redis里面没有找到pipe指令,后来 阅读全文
posted @ 2022-04-03 21:47 .Neterr 阅读(428) 评论(0) 推荐(1)
摘要:发布订阅: Redis 发布订阅 (pub/sub) 是一种消息通信模式,可以用于消息的传输,Redis 的发布订阅机制包括三个部分,发布者,订阅者和 Channel。适宜做在线聊天、消息推送等。 发布者和订阅者都是 Redis 客户端,Channel 则为 Redis 服务器端,发布者将消息发送到 阅读全文
posted @ 2022-03-21 21:46 .Neterr 阅读(511) 评论(0) 推荐(1)
摘要:ConnectionMultiplexer 类型公开了多个事件: ConfigurationChanged 当 ConnectionMultiplexer 里面的连接配置被更改后触发 ConfigurationChangedBroadcast 通过发布/订阅功能接受到一个重新配置的消息的时候;这通常 阅读全文
posted @ 2022-03-18 00:17 .Neterr 阅读(345) 评论(0) 推荐(0)
摘要:List数据类型 它是一个双向链表,支持左进、左出、右进、右出,所以它即可以充当队列使用,也可以充当栈使用。 (1). 队列:先进先出, 可以利用List左进右出,或者右进左出(ListLeftPush和ListRightPop配合 、 ListRightPush和ListLeftPop配合) (2 阅读全文
posted @ 2022-02-20 21:56 .Neterr 阅读(1206) 评论(0) 推荐(0)
摘要:Set数据类型 Api (1).SetAdd:添加数据,可以单独1个key-1个value,也可以1个key-多个value添加 (2).SetLength:求key集合的数量 (3).SetContains:判断key集合中是否包含指定值 (4).SetRandomMember:随机获取指定key 阅读全文
posted @ 2020-11-25 21:51 .Neterr 阅读(1343) 评论(0) 推荐(0)
摘要:String类型 Api (1).StringSet:写入数据,如果数据已经存在,则覆盖;可以一次性存入1个key-value,也可以一次性存入多个Key-value集合,并且可以设置其过期时间。 (2).StringGet:读取数据,可以一次性读取一个key的value,也可以一次性读取多个key 阅读全文
posted @ 2020-09-14 13:36 .Neterr 阅读(710) 评论(0) 推荐(0)
摘要:# 连接对象ConnectionMultiplexer `ConnectionMultiplexer`是`StackExchange.Redis`的核心对象,`ConnectionMultiplexer` 应被多个调用之间共享使用。不需要为每个操作创建一个 `ConnectionMultiplexe 阅读全文
posted @ 2020-09-09 16:08 .Neterr 阅读(2721) 评论(0) 推荐(0)
摘要:Redis是一个高效的内存数据库,它支持包括String、List、Set、SortedSet和Hash等数据类型的存储,在Redis中通常根据数据的key查询其value值,Redis没有条件查询,在面对一些需要分页或排序的场景时(如评论,时间线),Redis就不太好不处理了。 前段时间在项目中需 阅读全文
posted @ 2020-07-18 11:37 .Neterr 阅读(3058) 评论(0) 推荐(0)
摘要:秒杀案例介绍 秒杀需要校验优惠券库存、每个用户只能使用一个优惠券,校验完成后下单。常规流程需要加锁,并发量低、数据库压力大。 如何优化? 将秒杀流程分为两个阶段,并且使用redis 第一阶段 校验优惠券库存、校验用户是否已使用优惠券。校验通过后扣减库存、记录使用优惠券的用户id。整个操作应该保证原子 阅读全文
posted @ 2020-07-09 19:39 .Neterr 阅读(538) 评论(0) 推荐(0)
摘要:缓存更新策略 设置缓存的过期时间,一致性差 主动更新,更新数据库时主动更新缓存 建议主动更新为主,过期淘汰兜底,因为主动更新也不能完全保证一致性 主动更新策略 Cache Aside Pattern 由缓存的调用者,在更新数据库的同时更新缓存 Read/Write Through Pattern 缓 阅读全文
posted @ 2020-07-06 23:30 .Neterr 阅读(197) 评论(0) 推荐(0)
摘要:什么是布隆过滤器 布隆过滤器(Bloom Filter)是一种比较巧妙的概率型数据结构,它可以告诉你某种东西一定不存在或者可能存在。当布隆过滤器说,某种东西存在时,这种东西可能不存在;当布隆过滤器说,某种东西不存在时,那么这种东西一定不存在。 布隆过滤器相对于Set、Map 等数据结构来说,它可以更 阅读全文
posted @ 2020-07-05 19:55 .Neterr 阅读(377) 评论(0) 推荐(0)
摘要:缓存穿透 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。 解决方案 缓存空对象 布隆过滤 增强id的复杂度,避免被猜测id规律 做好数据的基础格式校验 加强用户权限校验 做好热点参数的限流 缓存雪崩 缓存雪崩是指在同一时段大量的缓存key同时失 阅读全文
posted @ 2020-07-05 11:38 .Neterr 阅读(523) 评论(0) 推荐(0)
摘要:# 介绍 Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。 Redis通过内置的 Lua 解释器,可以使用 `EVAL `命令对 Lua 脚本进行求值。在lua脚本中可以通过两个不同的函数调用redis命 阅读全文
posted @ 2020-07-04 19:03 .Neterr 阅读(484) 评论(0) 推荐(0)
摘要:介绍 redis对事务的支持目前还比较简单。不保证事务的一致性,即使中间有一条命令出错了,其他命令仍然可以正常执行,并且无法回滚。 和sql事务不同的是,Redis调用Exec只是将所有的命令变成一个单元一起执行,期间不会插入其他的命令。(隔离级别序列化) redis只能保证一个client发起的事 阅读全文
posted @ 2020-07-04 18:36 .Neterr 阅读(266) 评论(0) 推荐(1)
摘要:# String类型 value可以是String类型,也可以是数字类型(整数、浮点);当遇到incr、decr等操作就会转换成数值型进行计算,此时redisObject的encoding值为int。 不管哪种类型,底层都是字节数组形式存储,只不过编码方式不同。string类型最大空间不能超过512 阅读全文
posted @ 2019-12-24 19:01 .Neterr 阅读(238) 评论(0) 推荐(0)
摘要:Docker安装Redis 下载镜像 docker pull redis:6.2.6 运行容器 docker run -d --name redis -p 6379:6379 --restart always redis:6.2.6 --requirepass 123456 进入容器,测试redis 阅读全文
posted @ 2019-12-22 14:51 .Neterr 阅读(213) 评论(0) 推荐(0)
摘要:Redis为什么有多个库? Redis默认有16个库,使用select命令切换,Redis中的库和关系型数据库不一样,Redis中的库可以理解为“命名空间”,且不支持独立密码。Redis多数据库目的是为了对数据隔离,防止key冲突。 Redis为什么速度快? 1、完全基于内存,绝大部分请求是纯粹的内 阅读全文
posted @ 2019-12-22 10:33 .Neterr 阅读(522) 评论(0) 推荐(0)