随笔分类 - 08-Redis系列
1
摘要:一. Redis分布式锁剖析 1. 背景 在传统的单体项目中,即部署到单个IIS上,针对并发问题,比如进销存中的出库和入库问题,多个人同时操作,属于一个IIS进程中多个线程并发操作的问题,这个时候可以引入线程锁lock/Monitor等,轻松解决这类问题。但是随着业务量的逐渐增大,比如"秒杀业务",
阅读全文
摘要:一. 整体介绍 1. 说明 CSRedis 是 redis.io 官方推荐库,支持 redis-trib集群、哨兵、私有分区与连接池管理技术,简易 RedisHelper 静态类, 它主要又两个程序集。 (1).CSRedisCore:主库,实现对接redis各种功能 (2).Caching.CSR
阅读全文
摘要:一. Redis6.0 新特性 1. 多线程IO redis6.0引入多线程IO,只是用来处理网络数据的读写和协议的解析,而执行命令依旧是单线程,所以不需要去考虑set/get、事务、lua等的并发问题。(详细的线程模型见后面) 多线程IO的性能提升测试可参考:https://zhuanlan.zh
阅读全文
摘要:一. Redis脚本 1. 简介 从 Redis 2.6.0 版本开始,通过内置的 Lua 解释器,可以使用 EVAL 命令对 Lua 脚本进行求值。在lua脚本中可以通过两个不同的函数调用redis命令,分别是:redis.call() 和 redis.pcall() (1). 脚本的原子性 Re
阅读全文
摘要:一. Bloom Filte介绍 1. 含义 (1). 布隆过滤器(Bloom Filter)是由Howard Bloom在1970年提出的一种比较巧妙的概率型数据结构,它实际上是由一个很长的二进制(0或1)向量和一系列随机映射函数组成。 (2). 布隆过滤器可以用于检索一个元素是否在一个集合中。它
阅读全文
摘要:一. 事务 1. 概念补充 (1). 原子性 一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 2. redis事务说明 Redis的事务并
阅读全文
摘要:一. 主从复制 1. 含义 在分布式系统中,为了解决单点问题,通常会把数据复制多个副本到其它机器,满足故障恢复和负载均衡等要求,Redis也是如此,提供了主从复制功能。(redis第一代架构) 实质:一个主服务器(master)对应多个从服务器(slave),主从之间实现数据同步,主服务器负责【写】
阅读全文
摘要:一. 数据持久化 1. 含义 Redis 提供了 RDB 和 AOF 两种持久化方式,默认开启的是RDB,如果需要AOF,需要手动修改配置文件进行开启。 RDB:是一种对Redis存在内存中的数据周期性的持久化机制,将内存中的数据以快照的形式硬盘,实质上是fork了一个子进程在执行数据存储,采用的是
阅读全文
摘要:一. 缓存雪崩 1. 含义 同一时刻,大量的缓存同时过期失效。 2. 产生原因和后果 (1). 原因:由于开发人员经验不足或失误,大量热点缓存设置了统一的过期时间。 (2). 产生后果:恰逢秒杀高峰,缓存过期,瞬间海量的QPS(每秒查询次数)直接打到DB上,如果系统架构没有熔断机制,直接将导致系统全
阅读全文
摘要:一. String 1. 数据类型介绍 典型的Key-Value集合,不少人喜欢用来存实体,需要序列化成字符串,获取的时候需要反序列化一下。(还是建议合理选择redis的数据结构,而不是万物都用string) 2. 应用场景 (1). 缓存 string类型最简单的一个应用就是Key-value缓存
阅读全文
摘要:一. Redis整体介绍 1. NOSQL介绍 1.什么是NOSQL NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。 随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SN
阅读全文
摘要:一. Redis安装和连接 1. 下载地址 官网:https://redis.io/ 官网-中文:http://www.redis.cn/ Linux下载地址:https://download.redis.io/releases/ Windows下载地址:https://github.com/Mic
阅读全文
摘要:一. Cluster搭建 1. 事先准备 (1). 服务器环境:Centos8 (2). Redis环境:安装redis5.0版本 PS: 在redis 5.0之前,redis cluster的搭建需要借助Ruby环境,使用redis-trib指令进行集群的管理,redis5.0以后,redis已经
阅读全文
摘要:一. 铺垫 1. 为什么要用服务器集群 (1). 分摊客户端的压力,提高服务器效率。(高并发) (2). 解决单点故障问题,即删除服务器节点或者增加服务器节点都不影响使用。(高可用) 2. 集群的类型 (1). 对称集群:各个集群实例角色的地位相同。(数据计算) (2). 非对称集群:各个集群实例角
阅读全文
摘要:一. Geo类型 1. 类型说明 Geo 是 Redis 3.2 版本后新增的数据类型,用来保存兴趣点(POI,point of interest)的坐标信息。可以实现计算两 POI 之间的距离、获取一个点周边指定距离的 POI。 2. 常用Api (1).GeoAdd:添加POI点 (2).Geo
阅读全文
摘要:一. List类型基础 1.介绍 它是一个双向链表,支持左进、左出、右进、右出,所以它即可以充当队列使用,也可以充当栈使用。 (1). 队列:先进先出, 可以利用List左进右出,或者右进左出(ListLeftPush和ListRightPop配合 、 ListRightPush和ListLeftP
阅读全文
摘要:一. Set类型基础 1. 类型说明 1个key→多个value,value的值不重复! Set一种无序且元素内容不重复的集合,不用做重复性判断了,和我们数学中的集合概念相同,可以对多个集合求交集、并集、差集,key可以理解成集合的名字。 注:set 用哈希表来保持字符串的唯一性,没有先后顺序,是按
阅读全文
摘要:一. String类型基础 1.类型介绍 典型的Key-Value集合,如果要存实体,需要序列化成字符串,获取的时候需要反序列化一下。 2. 指令Api说明 3.常用Api说明 (1).StringSet:写入数据,如果数据已经存在,则覆盖;可以一次性存入1个key-value,也可以一次性存入多个
阅读全文
1