随笔分类 - [71]NoSql
-
消息队列,缓存,分库分表是高并发解决方案
摘要:消息队列的七种经典应用场景 在笔者心中,消息队列,缓存,分库分表是高并发解决方案三剑客。 在职业生涯中,笔者曾经使用过 ActiveMQ 、RabbitMQ 、Kafka 、RocketMQ 这些知名的消息队列 。 这篇文章,笔者结合自己的真实经历,和大家分享消息队列的七种经典应用场景。 1 异步& 阅读全文
-
Remote Dictionary Server
摘要:Redis 7.0 源码环境搭建与阅读技巧 天下武功,无坚不摧,唯快不破!我的名字叫 Redis,全称是 Remote Dictionary Server。 有人说,组 CP,除了要了解她外,还要给机会让她了解你。 那么,作为开发工程师的你,是否愿意认真阅读此心法抓住机会来了解我,运用到你的系统中提 阅读全文
-
kafka经验
摘要:使用kafka经验 前言 本篇文章主要介绍的关于本人从刚工作到现在使用kafka的经验,内容非常多,包含了kafka的常用命令,在生产环境中遇到的一些场景处理,kafka的一些web工具推荐等等。由于kafka这块的记录以及经验是从我刚开始使用kafka,从2017年开始,可能里面有些内容过时,请见 阅读全文
-
Redis系列:使用List实现消息队列
摘要:Redis系列14:使用List实现消息队列 Redis系列1:深刻理解高性能Redis的本质Redis系列2:数据持久化提高可用性Redis系列3:高可用之主从架构Redis系列4:高可用之Sentinel(哨兵模式)Redis系列5:深入分析Cluster 集群模式 追求性能极致:Redis6. 阅读全文
-
Redis九种数据结构
摘要:深度剖析Redis九种数据结构实现原理,建议收藏 1. Redis介绍 Redis 是一个高性能的键值存储系统,支持多种数据结构。 包含五种基本类型 String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),和三种特殊类型 Geo(地理位置)、HyperLog 阅读全文
-
使用NEST简单操作Elasticsearch
摘要:.Net Core中使用NEST简单操作Elasticsearch C#中访问Elasticsearch主要通过两个包NEST和Elasticsearch.Net,NEST用高级语法糖封装了Elasticsearch.Net可以通过类Linq的方式进行操作,而Elasticsearch.Net相比之 阅读全文
-
使用StackExchange.Redis组件C#模糊删除模糊查找
摘要:C# StackExchange.Redis 模糊删除 模糊查找 /// <summary> /// 模糊查找 /// </summary> /// <param name="key"></param> public List<XJDataDll.Tag.Point> SelectTags(stri 阅读全文
-
数据结构与对象------Redis
摘要:参考《Redis设计与实现》 系列文章目录和关于我 一丶简单动态字符串 当redis需要的不仅仅是一个字符串字面量,而是一个可以被修改的字符串值时,就会使用SDS(simple dynamic string)来表示字符串值。比如set msg "hello world"将创建一个新键值对,键值对的键 阅读全文
-
Redis双写缓存更新策略
摘要:缓存更新策略(双写一致) 在业务初始阶段,流量很少的情况下,通过直接操作数据是可行的操作,但是随着业务量的增长,用户的访问量也随之增加,在该阶段自然需要使用一些手段(缓存)来减轻数据库的压力;所谓遇事不决,那就加一层。 在当前技术栈中,redis当属缓存的第一梯队了,但是随着缓存的引入,业务架构和问 阅读全文
-
csredis操作redis
摘要:c#使用csredis操作redis 现在流行的redis连接客户端有StackExchange.Redis和ServiceStack.Redis,为什么选择csredis而不是这两个? .net 最有名望的 ServiceStack.Redis 早已沦为商业用途,在 .NETCore 中使用只能充 阅读全文
-
.NET 的分布式锁类库
摘要:自己动手基于 Redis 实现一个 .NET 的分布式锁类库 分布式锁的核心其实就是采用一个集中式的服务,然后多个应用节点进行抢占式锁定来进行实现,今天介绍如何采用Redis作为基础服务,实现一个分布式锁的类库,本方案不考虑 Redis 集群多节点问题,如果引入集群多节点问题,会导致解决成本大幅上升 阅读全文
-
redis网络IO模型底层使用IO多路复用,通过reactor模式实现的,在redis 6.0以前属于单reactor单线程模式
摘要:详解redis网络IO模型 前言 "redis是单线程的" 这句话我们耳熟能详。但它有一定的前提,redis整个服务不可能只用到一个线程完成所有工作,它还有持久化、key过期删除、集群管理等其它模块,redis会通过fork子进程或开启额外的线程去处理。所谓的单线程是指从网络连接(accept) - 阅读全文
-
【系统设计】基于位置的服务搜索附近的POI--ES从2.0版本支持geo-spatial
摘要:Elasticsearch 在地理信息空间索引的探索和演进 在本文中,我们将设计一个邻近服务,用来发现用户附近的地方,比如餐馆,酒店,商场等。 设计要求 从一个小明去面试的故事开始。 面试官:你好,我想考察一下你的设计能力,如果让你设计一个邻近服务,用来搜索用户附近的商家,你会怎么做? 小明:好的, 阅读全文
-
可靠的延迟队列
摘要:用 Redis 做一个可靠的延迟队列 背景# 我们在工作中经常遇到等待一段时间后再执行某些任务的需求,比如: 若订单创建 15 分钟后仍未支付,需要关闭订单并释放库存。 用户设置了一个 “下午 2 点提醒我去做核酸” 的待办事项。 当回调失败后等待 30 秒然后重试, 第二次失败后等待 1 分钟再次 阅读全文
-
部署Redis集群
摘要:部署Redis集群 Redis简介 Redis(Remote Dictionary Server)是完全开源的、遵守BSD协议的、高性能的Key-Value数据库。Redis与其他Key-Value缓存产品有一下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再 阅读全文
-
Redis相比MemoryCache有哪些优势?
摘要:女朋友面试回来抱怨说会redis,面试官问了一堆redis Redis 优缺点及特点 什么是Redis?简述它的优缺点? Redis本质上是一个Key-Value类型的内存数据库,类似MemoryCache,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存 阅读全文
-
Redis分布式缓存承载于 “Microsoft.Extensions.Caching.Redis”这个NuGet包
摘要:Redis分布式缓存承载于 “Microsoft.Extensions.Caching.Redis”这个NuGet包中,我们需要手动添加针对该NuGet包的依赖。 using Microsoft.Extensions.Caching.Distributed; using Microsoft.Exte 阅读全文
-
Elasticsearch的系统架构实战
摘要:记一次引入Elasticsearch的系统架构实战 前言 我曾经面试安踏的技术岗,当时面试官问了我一个问题:如果你想使用某个新技术但是领导不愿意,你怎么办? 对于该问题我相信大家就算没有面试被问到过,现实工作中同事之间的合作也会遇到。 因此从我的角度重新去回答这个问题,有以下几点: 1.师出有名,在 阅读全文
-
Kafka本身是不保证仅且仅收到一次
摘要:RabbitMQ设计原理解析 背景 RabbitMQ现在用的也比较多,但是没有过去那么多啦。现在很多的流行或者常用技术或者思路都是从过去的思路中演变而来的。了解一些过去的技术,对有些人来说可能会产生众里寻他千百度的顿悟,加深对技术的理解,更好的应用于工作中去。 本篇整体采用从浅到深的逻辑结构来描述。 阅读全文
-
缓存雪崩、缓存击穿和缓存穿透
摘要:Redis 面试常见问题———缓存雪崩、缓存击穿以及缓存穿透 在开发中会面临缓存异常可能会出现三个问题,分别是缓存雪崩、缓存击穿和缓存穿透。这三个问题会导致大量请求从缓存转移到数据库,如果请求的并发量很大的话,就会导致数据库崩溃。所以在面试官也会经常问这些问题。 缓存雪崩 缓存雪崩是指大量的请求无法 阅读全文