2021
03-22
03-22
浅谈我是如何用redis做实时订阅推送的
前阵子开发了公司领?恢行牡南钅浚?飧鱿钅渴且?edis作为关键技术落地的。先说一下领?恢行牡南钅堪桑?飧鱿钅烤屠嗨凭┒?pp的领?恢行模?比煌际墙厝【┒?模??镜木筒唤亓恕!!?/p>其中有一个功能叫做领?坏亩┰耐扑汀J裁词橇?坏亩┰耐扑停烤褪怯没Ф┰牧烁?坏耐扑停?诳闪烊∏暗囊环种泳鸵?烟嵝研畔⑼扑偷接没У?pp中。本来这个订阅功能应该是消息中心那边做的,但他们说这个短时间内做不了。所以让我这个负责优惠?坏淖隽?.-!。具体方案...
继续阅读 >
Redis有5个基本数据结构,string、list、hash、set和zset。它们是日常开发中使用频率非常高应用最为广泛的数据结构,把这5个数据结构都吃透了,你就掌握了Redis应用知识的一半了。string首先我们从string谈起。string表示的是一个可变的字节数组,我们初始化字符串的内容、可以拿到字符串的长度,可以获取string的子串,可以覆盖string的子串内容,可以追加子串。Redis的字符串是动态字符串,是可以修改的字符串,内部结构实现上类...
在开发测试环境中,我们一般搭建Redis的单实例来应对开发测试需求,但是在生产环境,如果对可用性、可靠性要求较高,则需要引入Redis的集群方案。虽然现在各大云平台有提供缓存服务可以直接使用,但了解一下其背后的实现与原理总还是有些必要(比如面试),本文就一起来学习一下Redis的几种集群方案。Redis支持三种集群方案主从复制模式Sentinel(哨兵)模式Cluster模式主从复制模式1.基本原理主从复制模式中包含一个主数...
一、引言登陆权限控制是每个系统都应必备的功能,实现方法也有好多种。下面使用Token认证来实现系统的权限访问。功能描述:用户登录成功后,后台返回一个token给调用者,同时自定义一个@AuthToken注解,被该注解标注的API请求都需要进行token效验,效验通过才可以正常访问,实现接口级的鉴权控制。同时token具有生命周期,在用户持续一段时间不进行操作的话,token则会过期,用户一直操作的话,则不会过期。二、环境SpringBootRedi...
在Redis中,有一种数据类型,当在存储的时候会同时采用两种数据结构来进行分别存储,那么Redis为什么要这么做呢?这么做会造成同一份数据占用两倍空间吗?五种基本类型之集合对象Redis中的集合对象是一个包含字符串类型元素的无序集合,集合中元素唯一不可重复。集合对象的底层数据结构有两种:intset和hashtable。内部通过编码来进行区分:编码属性描述objectencoding命令返回值...
Redis是一个键值对数据库,其键是通过哈希进行存储的。整个Redis可以认为是一个外层哈希,之所以称为外层哈希,是因为Redis内部也提供了一种哈希类型,这个可以称之为内部哈希。当我们采用哈希对象进行数据存储时,对整个Redis而言,就经过了两层哈希存储。哈希对象哈希对象本身也是一个key-value存储结构,底层的存储结构也可以分为两种:ziplist(压缩列表)和hashtable(哈希表)。这两种存储结构也是通过编码来进行...
列表对象是Redis中5种基础数据类型之一,在Redis3.2版本之前,列表对象底层存储结构有两种:linkedlist(双端列表)和ziplist(压缩列表),而在Redis3.2版本之后,列表对象底层存储结构只有一种:quicklist(快速列表),难道通过精心设计的ziplist最终被Redis抛弃了吗?列表对象同字符串对象一样,列表对象到底使用哪一种数据结构来进行存储也是通过编码来进行区分:编码属性描述object...
正常情况下我们选择使用Redis就是为了提升查询速度,然而让人意外的是,Redis当中却有一种比较有意思的数据结构,这种数据结构通过牺牲部分读写速度来达到节省内存的目的,这就是ziplist(压缩列表),Redis为什么要这么做呢?难道真的是觉得自己的速度太快了,牺牲一点速度也不影响吗?什么是压缩列表ziplist是为了节省内存而设计出来的一种数据结构。ziplist是由一系列特殊编码组成的连续内存块的顺序型数据结构,一个zi...
在日常开发中,为了保证数据的一致性,我们一般都选择关系型数据库来存储数据,如MySQL,Oracle等,因为关系型数据库有着事务的特性。然而在并发量比较大的业务场景,关系型数据库却又往往会成为系统瓶颈,无法完全满足我们的需求,所以就需要使用到缓存,而非关系型数据库,即NoSQL数据库往往又会成为最佳选择。NoSQL数据库最常见的解释是non-relational,也有人解释为NotOnlySQL。非关系型数据库不保证事务,也就是不具...
首先项目A,也就是SpringBOOT项目中使用redisTemplate来做REDIS的缓存时,你会发现存到REDIS里边的KEY和VALUE,redisTemplat使用jdkSerializeable存储二进制字节编码项目B中使用jedis时,存储起来的是字符串,导致项目A要调用项目缓存的键值对时,获取不到解决方案:修改项目A的redisTemplate的序列方式@Configuration@EnableCachingpublicclassRedisConfigextendsCachingConfigurerSupport{/***redis模板,存储关键...