Redis是开源的key-value存储工具,redis通常用来存储结构化的数据,因为redis的key可以包含String、hash、listset和sorted list。
Redisserver目前最稳定的版本是2.8.9,可以到官网http://redis.io/download下载。根据机器的类型及位数下载对应的版本安装即可,reids支持linux和windows操作系统。
Redisclient支持多种语言,包括:c、C++、C#、php、java、python、go等语言,根据自己的开发语言,选择合适的redis client版本类型即可。我是使用java语言开发的,针对java语言,redis client也提供了多种客户端支持,按照推荐类型依次是:Jedis、Redisson、JRedis、JDBC-Redis、RJC、redis-protocol、aredis、lettuce。前两种类型是比较推荐的,我们采用了Redisson类型版本作为redisclient的使用。
Redisson的源码工程所在位置:https://github.com/mrniko/redisson。
由于redisson是2014年1月份才发布的开源项目,对于很多使用redis的用户来说,还是个新东西,关于redisson的文档除了github上边有简单介绍之外,其它网站还没有,所以我基于对源码的理解还有github介绍,简单介绍下redisson。
redisson实现了分布式和可扩展的java数据结构,支持的数据结构有:List, Set, Map, Queue, SortedSet, ConcureentMap, Lock, AtomicLong, CountDownLatch。并且是线程安全的,底层使用Netty 4实现网络通信。和jedis相比,功能比较简单,不支持排序,事务,管道,分区等redis特性,可以认为是jedis的补充,不能替换jedis。
优点:
1.可以使用熟悉的java数据结构,比如要往List中存储1,2,3,4,代码是这样的:
1
2
3
4
5
|
List<Integer> list = redisson.getList( "list" );
list.add( 1 );
list.add( 2 );
list.add( 3 );
list.add( 4 );
|
2.支持存储pojo对象,比如要存储一个TestObject,代码是这样的:
1
2
|
List<TestObject> list = redisson.getList( "list" );
list.add( new TestObject());
|
3.是线程安全的,这也是redisson特别强调的,看一下List的存储逻辑,使用watch,muti,exec保证了数据的一致性。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public V set( int index, V element) {
checkIndex(index);
RedisConnection<String, Object> conn = connectionManager.connection();
try {
while ( true ) {
conn.watch(getName());
V prev = (V) conn.lindex(getName(), index);
conn.multi();
conn.lset(getName(), index, element);
if (conn.exec().size() == 1 ) {
return prev;
}
}
} finally {
connectionManager.release(conn);
}
}
|
缺点:
不支持字符串存储,Redisson的实现类中只支持集合操作,不能对普通字符做操作。
不支持很多redis特性,比如排序,事务,管道,集群等。
发布时间短,稳定性和可靠性有待验证。
相关推荐
在Java开发领域,开发者可以选择多种客户端来与Redis进行交互,其中最常用的是Jedis和Redisson。本文将详细介绍如何使用Redisson来替代Jedis,并对两者之间的对应方法进行详细对比。 #### Jedis简介 Jedis是用Java...
`redis_client`可能是指一个Java实现的Redis客户端库,用于连接和操作Redis服务器。 在Java中,有多个流行的Redis客户端库可以选择,如Jedis、Lettuce和Redisson等。这些库提供了丰富的API,支持多种Redis命令和...
本文将详细介绍如何在Java项目中使用Redisson客户端与ProtoBuf结合,实现自定义的ProtoBufCodec,以便在Redis缓存中进行数据的编码和解码。 首先,我们需要了解Redisson客户端。Redisson是一个功能丰富的Java Redis...
java连接Redis服务器端的示例工程,演示了通过Redisson 连接redis服务器的读取与存储代码
赠送jar包:spire-macros_2.12-0.13.0.jar; 赠送原API文档:spire-macros_2.12-0.13.0-javadoc.jar; 赠送源代码:spire-macros_2.12-0.13.0-sources.jar; 赠送Maven依赖信息文件:spire-macros_2.12-0.13.0.pom;...
IF $(redis-cli get lock_key | grep -q "$client_id") THEN redis-cli del lock_key ENDIF ``` 三、分布式锁的挑战与优化 1. 死锁预防:由于网络延迟或异常可能导致客户端无法正常释放锁,可以设置超时时间,并...
基于Redis服务器构建的分布式和可扩展的Java数据结构(Set, SortedSet, Map, ConcurrentMap, List, Queue, Deque, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, HyperLogLog),是一个高级Redis Java客户端...
RClusterClient client = Redisson.create(config); RSet<String> set = client.getSet("mySet"); set.add("value1"); set.remove("value1"); ``` 4. 关闭连接 记得在操作完成后关闭连接,避免资源泄露。 以上就是...
2. **Java客户端**:Java中常见的Redis客户端有Jedis、Lettuce和Redisson等。它们都提供了与Redis服务器通信的API,包括连接管理、命令执行、事务处理等功能。例如,Jedis是较早的Redis客户端,功能完备,而Lettuce...
本文采用第二种方式接入 CacheCloud Redis,工程采用 SpringBoot,Redis 采用哨兵模式,Redis 客户端主要用 Spring-Data-Redis 和 Redisson。 四、 添加配置到 pom.xml 文件 添加 CacheCloud 相关的 Jar 包和 ...
Redisson-Redis Java客户端具有内存中数据网格的功能 | | | | | 基于高性能的异步和无锁Java Redis客户端和框架。 JDK兼容性:1.8-15,Android 产品特点 Redis复制设置(包括对和) Redis群集设置(包括对和) ...
Redisson是另一个全面的Redis Java客户端,它不仅提供基本的Redis操作,还包含了一些高级特性,如分布式锁、分布式MapReduce等。Redisson同样支持异步操作和Netty框架,能实现良好的性能和线性可伸缩性。然而,它的...
Redisson 3.15.1 Sentinel身份验证问题该存储库旨在帮助重现和分析 3.15.1中与Redis Sentinel身份验证有关的问题。重现步骤问题使用docker-compose up -d启动Docker Compose堆栈;使用mvn compile exec:java编译并...
用法 var redisNamespace = require ( 'redis-namespace' )var client = redisNamespace . createClient ( 'myPrefix:' )client . set ( 'foo' , 'bar' , function ( err ) { // 'myPrefix:foo' is set to 'bar' in ...
redisson.zip,基于redis的分布式可伸缩java数据结构。高级redis客户端。redisson-redis java客户端,具有内存数据网格的特性。支持超过30个对象和服务:set、multimap、sortedset、map、list、queue、deque、...
总结来说,Redisson和Curator都是Java中实现分布式锁的有效工具。选择哪一个取决于具体的需求,如性能、易用性、功能特性以及对底层技术的熟悉程度。在实际项目中,可以根据场景选择合适的方法,确保在分布式环境下...
为您提供MessagePipe分布式消息顺序消费管道下载,Message Pipe是基于Redis实现的顺序消息管道,由于内部引入了Redisson分布式锁所以它是线程安全的,多线程情况下也会按照写入管道的顺序执行消费。Message Pipe采用...
软件架构 - java后台:music-server ...| redisson | 3.10.6 | 对redis进行封装、集成分布式锁等 | | hikari | 3.2.0| 数据库连接池| | log4j2 | 2.11.2 | 更快的log日志工具 | | fst| 2.57 | 更快的序列化
Message Pipe是基于Redis实现的顺序消息管道,由于内部引入了Redisson分布式锁所以它是线程安全的,多线程情况下也会按照写入管道的顺序执行消费。 Message Pipe采用Client、Server概念进行设计,内部通过grpc-netty...