#Redis

自从Redis面世以来,作为一个开源的高性能的key-value型数据库,很大程度的对关系型数据库起到很好的补充作用。 Redis实现简单,功能齐全,已经成为了业界最常用的组件之一。为了更方便的使用,衍生出一系列的可视化工具,像是redis desktop manager、medis、fastoredis、redis clent等等等等,各花各草入各眼,每个人都有自己喜欢的风格,但是往往这些工具可能在界面UI方面还是有待提高,有些甚至还要收费。 今天小编就想和大家分享一款帅气、好看同时功能强大的开源Redis客户端工具,或许就能成为你喜欢的那朵花那棵草。 AnotherRedisDesktopManager一款,更快、更好、更稳定的redis桌面管理客户端工具,与Linux、Windows和Mac三大平台完美兼容。 小编先给大家演示下其页面风格,喜欢暗黑风格的小伙伴一定喜欢不已,整体...

通过前面一篇集中式缓存的使用教程,我们已经了解了Redis的核心功能:作为K、V存储的高性能缓存。 接下来我们会分几篇来继续讲讲Redis的一些其他强大用法!如果你对此感兴趣,一定要关注收藏我哦! 发布订阅模式如果你看过之前我写的关于MQ的相关文章,那么对于发布订阅功能应该不会陌生。如果没看过,那也不要紧,这里先做一个简单介绍,已经了解的可以跳过直接看下一节内容。 什么是发布订阅模式? 在发布订阅模式中有个重要的角色,一个是发布者Publisher,另一个订阅者Subscriber。本质上来说,发布订阅模式就是一种生产者消费者模式,Publisher负责生产消息,而Subscriber则负责消费它所订阅的消息。这种模式被广泛的应用于软硬件的系统设计中。比如:配置中心的一个配置修改之后,就是通过发布订阅的方式传递给订阅这个配置的订阅者来实现自动刷新的。 不就是观察者模式吗? 看到这里,...

之前我们介绍了两种进程内缓存的用法,包括Spring Boot默认使用的ConcurrentMap缓存以及缓存框架EhCache。虽然EhCache已经能够适用很多应用场景,但是由于EhCache是进程内的缓存框架,在集群模式下时,各应用服务器之间的缓存都是独立的,因此在不同服务器的进程间会存在缓存不一致的情况。即使EhCache提供了集群环境下的缓存同步策略,但是同步依然是需要一定的时间,短暂的缓存不一致依然存在。 在一些要求高一致性(任何数据变化都能及时的被查询到)的系统和应用中,就不能再使用EhCache来解决了,这个时候使用集中式缓存就可以很好的解决缓存数据的一致性问题。接下来我们就来学习一下,如何在Spring Boot的缓存支持中使用Redis实现数据缓存。 动手试试本篇的实现将基于上一篇的基础工程来进行。先来回顾下上一篇中的程序要素: User实体的定义 @Entity...

前几日,Redis 创始人 Salvatore Sanfilippo 在他的个人博客(http://antirez.com/)上宣布将结束自己的 Redis 之旅! 博客全文如下,原文地址:http://antirez.com/news/133 Salvatore Sanfilippo 的退出,并不是对 Redis 本身的失望,而是由于日复一日的开源维护工作,让其感到疲惫与厌倦。对于 Redis 的后续维护工作将交给他的几位同事负责,而自己准备退居二线,后续将成为 Redis 实验室的一员,为 Redis 的未来提供创意与想法。而未来要做什么,Salvatore Sanfilippo 表示还未有明确的规划,但会用更多的时间去做自己真正想做的事,比如:写技术博客或录制视频等。 其实对于,Salvatore Sanfilippo 的退出,可能并不意外。在一年之前,他就曾经在其个人博客中...

Redis的作者在博客上宣布:Redis 6.0.0 稳定版发布了。 原文地址: http://antirez.com/news/132 那么,从RC1到今天,除了稳定之外,还有什么变化呢? 重新设计了客户端缓存,特别是放弃了caching slot,而只使用key names。 现在Redis支持这样一种模式:如果用于复制的RDB文件不再有用,它将立即删除。在某些环境中,最好不要将数据放在磁盘上,而只放在内存中。 acl在特点方面变得更好。首先,有一个新的ACL日志命令,它允许查看所有违反ACL的客户机、访问不应该访问的命令、访问不应该访问的密钥,或者验证尝试失败。日志实际上在内存中,因此每个外部代理都可以调用“ACL log”来查看发生了什么。这对于调试ACL问题非常有用。 改进了复制协议PSYNC2。Redis能够更频繁地部分重新同步,使副本和主副本找到公共偏移。 带有超时的...

摘要: 本文介绍了在使用阿里云Redis的开发规范,从键值设计、命令使用、客户端使用、相关工具等方面进行说明,通过本文的介绍可以减少使用Redis过程带来的问题。 一、键值设计1. key名设计 (1)【建议】: 可读性和可管理性 以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id ugc:video:1 (2)【建议】:简洁性 保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如: user:{uid}:friends:messages:{mid}简化为u:{uid}:fr:m:{mid}。 (3)【强制】:不要包含特殊字符 反例:包含空格、换行、单双引号以及其他转义字符 2. value设计 (1)【强制】:拒绝bigkey(防止网卡流...

摘要: 合理的JedisPool资源池参数设置能为业务使用Redis保驾护航,本文将对JedisPool的使用、资源池的参数进行详细说明,最后给出“最合理”配置。 背景合理的JedisPool资源池参数设置能为业务使用Redis保驾护航,本文将对JedisPool的使用、资源池的参数进行详细说明,最后给出“最合理”配置。 一、使用方法以官方的2.9.0为例子(Jedis Release),Maven依赖如下: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> <scope>compile</scope>...

摘要: Jedis虽然使用起来比较简单,但是如果不能根据使用场景设置合理的参数(例如连接池参数),不合理的使用一些功能(例如Lua和事务)也会产生很多问题,本文对这些问题逐个说明 Jedis虽然使用起来比较简单,但是如果不能根据使用场景设置合理的参数(例如连接池参数),不合理的使用一些功能(例如Lua和事务)也会产生很多问题,本文对这些问题逐个说明: 一.无法从连接池获取到Jedis连接1.异常堆栈(1) 连接池参数blockWhenExhausted = true(默认) 如果连接池没有可用Jedis连接,会等待maxWaitMillis(毫秒),依然没有获取到可用Jedis连接,会抛出如下异常: redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the po...

上一篇介绍了在Spring Boot中如何引入缓存、缓存注解的使用、以及EhCache的整合。 虽然EhCache已经能够适用很多应用场景,但是由于EhCache是进程内的缓存框架,在集群模式下时,各应用服务器之间的缓存都是独立的,因此在不同服务器的进程间会存在缓存不一致的情况。即使EhCache提供了集群环境下的缓存同步策略,但是同步依然需要一定的时间,短暂的缓存不一致依然存在。 在一些要求高一致性(任何数据变化都能及时的被查询到)的系统和应用中,就不能再使用EhCache来解决了,这个时候使用集中式缓存是个不错的选择,因此本文将介绍如何在Spring Boot的缓存支持中使用Redis进行数据缓存。 下面以上一篇的例子作为基础进行改造,将缓存内容迁移到redis中。 准备工作可以下载案例Chapter4-4-1,进行下面改造步骤。 先来回顾一下在此案例中,我们做了什么内容: 引...

Spring Boot中除了对常用的关系型数据库提供了优秀的自动化支持之外,对于很多NoSQL数据库一样提供了自动化配置的支持,包括:Redis, MongoDB, Elasticsearch, Solr和Cassandra。 使用RedisRedis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。 Redis官网 Redis中文社区 引入依赖Spring Boot提供的数据访问框架Spring Data Redis基于Jedis。可以通过引入spring-boot-starter-redis来配置依赖关系。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boo...