草庐IT

redis-sharp

全部标签

Redis-数据结构及常用命令

字符串(String)数据结构常用命令:SETkeyvalue:设置指定key的值;GETkey:获取指定key的值;DELkey:删除指定key;INCRkey:将指定key的值增加1;DECRkey:将指定key的值减少1。列表(List)数据结构常用命令:LPUSHkeyvalue1value2…:将一个或多个值插入到列表的头部;RPUSHkeyvalue1value2…:将一个或多个值插入到列表的尾部;LPOPkey:移除并返回列表的第一个元素;RPOPkey:移除并返回列表的最后一个元素;LRANGEkeystartstop:返回指定范围内的列表元素。集合(Set)数据结构常用命令:

【夜莺监控方案】06-监控redis集群(prometheuse+n9e+redis_exporter)

环境说明服务器IP地址服务监控服务器10.10.xxx.56prometheus/grafanak8s-vip10.10.xxx.100redis集群将redis_exporter部署在监控服务器上,对各环境redis进行监控。此处以监控k8s平台的redis集群为例。1.redis_exporter创建redis_exporter目录,下边创建docker-compose.yml文件如下:version:'2'services:redis_exporter:image:harbocto.xxx.com.cn/public/redis_exportercontainer_name:redis_

基于Redis实现消息队列

基于Redis实现消息队列1.业务场景假设在没有专业消息中间件的情况下,又要通过消息队列去解耦。redis是个更好的选择。2.实现方式简要说明实现方式,这里只做个大概的概括发布与订阅(缺点:典型的一对一,不支持多个消费者公平消费消息,消息无法持久化,如果出现网络断开、Redis宕机等,消息就会被丢弃等问题)list队列(缺点:没有很好ACK机制,没有ConsumerGroup消费组,不支持一对多消费等问题)stream队列(推荐)官方:https://redis.io/docs/data-types/streams/3.概念Redis5.0带来了Stream类型。其实就是Redis对消息队列(

ES+Redis+MySQL,这个高可用架构设计

一、背景会员系统是一种基础系统,跟公司所有业务线的下单主流程密切相关。如果会员系统出故障,会导致用户无法下单,影响范围是全公司所有业务线。所以,会员系统必须保证高性能、高可用,提供稳定、高效的基础服务。随着同程和艺龙两家公司的合并,越来越多的系统需要打通同程APP、艺龙APP、同程微信小程序、艺龙微信小程序等多平台会员体系。例如微信小程序的交叉营销,用户买了一张火车票,此时想给他发酒店红包,这就需要查询该用户的统一会员关系。因为火车票用的是同程会员体系,酒店用的是艺龙会员体系,只有查到对应的艺龙会员卡号后,才能将红包挂载到该会员账号。除了上述讲的交叉营销,还有许多场景需要查询统一会员关系,例如

Redis之持久化讲解

1Redis持久化Redis数据是存储在内存中的,但是我们都知道内存的数据变化是很快的,也容易发生丢失,为了保证Redis数据不丢失,那就要把数据从内存存储到磁盘上,以便在服务器重启后还能够从磁盘中恢复原有数据,这就是Redis的数据持久化。Redis数据持久化有三种方式:AOF日志(AppendOnlyFile,文件追加方式):记录所有的操作命令,并以文本的形式追加到文件中。RDB快照(RedisDataBase):将某一个时刻的内存数据,以二进制的方式写入磁盘(早期默认方式)。混合持久化方式:Redis4.0新增了混合持久化的方式,集成了RDB和AOF的优点1.1持久化流程既然redis的

两行代码实现Redis消息队列,简单易用

Redis列表数据类型非常适合作为消息队列使用。将新的消息插入到列表尾部,然后从列表头部取出消息进行处理。该方案简单易用,并且支持多个消费者并行处理消息。两行核心代码即可实现消息队列,如下://推送消息redisTemplate.opsForList().leftPush(queueName,message);//接收消息redisTemplate.opsForList().rightPop(queueName);要实现消息队列,具体步骤如下:配置Redis连接信息在SpringBoot应用程序中,可以使用application.properties或application.yml文件来配置R

为什么Redis的数据被删除,内存占用还这么大?

❝操作系统分配给Redis的内存有6GB,通过指标used_memory_human发现存储数据只使用了4GB,为何会这样?为何无法保存数据?通过CONFIGSETmaxmemory100mb或者在redis.conf配置文件设置maxmemory100mbRedis内存占用限制。当达到内存最大值,会触发内存淘汰策略删除数据。除此之外,当key达到过期时间,Redis会有以下两种删除过期数据的策略:后台定时任务选取部分数据删除;惰性删除。❝假设Redis实例保存了5GB的数据,现在删除了2GB数据,Redis进程占用的内存一定会降低么?(也叫做RSS,进程消耗内存页数)。答案是:可能依然占用了

面试题:Redis中RDB和AOF两种持久化机制的原理和优缺点?

今天来分享一道比较好的面试题,“Redis中RDB和AOF两种持久化机制的原理的优缺点?”对于这个问题,我们一起看看考察点和比较好的回答吧!考察点现在的企业级开发中Redis的应用非常广泛,在面试中Redis几乎是必问的,因此除了Redis的基础知识之外,还要学习和了解一些经典和难点的题目!那么这个问题就是面试官想考察我们是不是平日里善于积累,仔细思考这方面的知识,同时想看看我们是不是具有这方面的能力!回答  关于这个问题,我从以下几点来回答:(1)Redis是一个基于Key-Value结构的内存数据库,在服务器重启的时候会丢失内存数据,所以为了避免Redis故障或者重启等因素导致数据丢失的问

Redis实现分布式锁

单体锁存在的问题在单体应用中,如果我们对共享数据不进行加锁操作,多线程操作共享数据时会出现数据一致性问题。(下述实例是一个简单的下单问题:从redis中获取库存,检查库存是否够,>0才允许下单)我们的解决办法通常是加锁。如下加单体锁(synchronized或RentranLock)来保证单个实例并发安全:但上锁代码块内线程只能串行执行,效率低。单体应用难以满足实际高并发访问需求,会将单体应用部署到多个tomcat实例上,由负载均衡将请求分发到不同实例上。一个tomocat实例是一个JVM进程,单体锁(synchronized、ReentrantLock)是JVM层面的锁,只能控制单个实例上的

@CacheEvict自动删Redis缓存的注意事项

一、前言今天遇到了一个问题,就是关于@CacheEvict,这个相信大家都很熟悉了,是Spring整合一些缓存的专用注解,它和@Cacheable是一对。一个是新增缓存一个是删除缓存,搭配使用,不用自己手动删除!今天遇到的问题是,@CacheEvict失效了,不会删除redis缓存。有两个方法都用了,一个会删除,一个不会删除。直接懵逼,随后和同事一起打断点发现了问题所在,其实还是自己没有看@CacheEvict注解的文档!「是因为key的没有匹配上,我的方法参数有两个参数,并且没有指定key这样就匹配不到,无法删除!」key注解注释:默认值为"",表示除非设置了自定义keyGenerator,