redis官方提供的java client:
git地址:https://github.com/mp911de/lettuce
Advanced Redis client for thread-safe sync, async, and reactive usage. Supports Cluster, Sentinel, Pipelining, and codecs.http://redis.paluch.biz
Introduction
Lettuce is a scalable thread-safe Redis client for synchronous, asynchronous and reactive usage. Multiple threads may share one connection if they avoid blocking and transactional operations such as BLPOP and MULTI/EXEC. lettuce is built with netty. Supports advanced Redis features such as Sentinel, Cluster, Pipelining, Auto-Reconnect and Redis data models.
This version of lettuce has been tested against Redis and 3.0.
- lettuce 3.x works with Java 6, 7 and 8, lettuce 4.x requires Java 8
- synchronous, asynchronous and reactive usage
- Redis Sentinel
- Redis Cluster
- SSL and Unix Domain Socket connections
- Streaming API
- CDI and Spring integration
- Codecs (for UTF8/bit/JSON etc. representation of your data)
- multiple Command Interfaces
几个常见的使用方法:
1. 连接单机
package com.lambdaworks.examples; import com.lambdaworks.redis.RedisClient; import com.lambdaworks.redis.RedisConnection; import com.lambdaworks.redis.RedisURI; /** * @author <a href="mailto:mpaluch@paluch.biz">Mark Paluch</a> * @since 18.06.15 09:17 */ public class ConnectToRedis { public static void main(String[] args) { // Syntax: redis://[password@]host[:port][/databaseNumber] RedisClient redisClient = new RedisClient(RedisURI.create("redis://password@localhost:6379/0")); RedisConnection<String, String> connection = redisClient.connect(); System.out.println("Connected to Redis"); connection.close(); redisClient.shutdown(); } }
2. 连接集群
package com.lambdaworks.examples; import com.lambdaworks.redis.RedisURI; import com.lambdaworks.redis.cluster.RedisAdvancedClusterConnection; import com.lambdaworks.redis.cluster.RedisClusterClient; /** * @author <a href="mailto:mpaluch@paluch.biz">Mark Paluch</a> * @since 18.06.15 09:17 */ public class ConnectToRedisCluster { public static void main(String[] args) { // Syntax: redis://[password@]host[:port] RedisClusterClient redisClient = new RedisClusterClient(RedisURI.create("redis://password@localhost:7379")); RedisAdvancedClusterConnection<String, String> connection = redisClient.connectCluster(); System.out.println("Connected to Redis"); connection.close(); redisClient.shutdown(); } }
3. 连接sentinel
package com.lambdaworks.examples; import com.lambdaworks.redis.*; /** * @author <a href="mailto:mpaluch@paluch.biz">Mark Paluch</a> * @since 18.06.15 09:17 */ public class ConnectToRedisUsingRedisSentinel { public static void main(String[] args) { // Syntax: redis-sentinel://[password@]host[:port][,host2[:port2]][/databaseNumber]#sentinelMasterId RedisClient redisClient = new RedisClient( RedisURI.create("redis-sentinel://localhost:26379,localhost:26380/0#mymaster")); RedisConnection<String, String> connection = redisClient.connect(); System.out.println("Connected to Redis using Redis Sentinel"); connection.close(); redisClient.shutdown(); } }
4.安全的连接
package com.lambdaworks.examples; import com.lambdaworks.redis.*; /** * @author <a href="mailto:mpaluch@paluch.biz">Mark Paluch</a> * @since 18.06.15 09:17 */ public class ConnectToRedisSSL { public static void main(String[] args) { // Syntax: rediss://[password@]host[:port][/databaseNumber] // Adopt the port to the stunnel port in front of your Redis instance RedisClient redisClient = new RedisClient(RedisURI.create("rediss://password@localhost:6443/0")); RedisConnection<String, String> connection = redisClient.connect(); System.out.println("Connected to Redis using SSL"); connection.close(); redisClient.shutdown(); } }
5. spring集成
package com.lambdaworks.examples; import com.lambdaworks.redis.*; import org.springframework.beans.factory.annotation.Autowired; /** * @author <a href="mailto:mpaluch@paluch.biz">Mark Paluch</a> * @since 18.06.15 09:31 */ public class MySpringBean { private RedisClient redisClient; @Autowired public void setRedisClient(RedisClient redisClient) { this.redisClient = redisClient; } public String ping() { RedisConnection<String, String> connection = redisClient.connect(); String result = connection.ping(); connection.close(); return result; } }
使用代码如下:
package com.lambdaworks.examples; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.lambdaworks.redis.RedisClient; import com.lambdaworks.redis.RedisConnection; /** * @author <a href="mailto:mpaluch@paluch.biz">Mark Paluch</a> * @since 18.06.15 09:17 */ public class SpringExample { public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "com/lambdaworks/examples/SpringTest-context.xml"); RedisClient client = context.getBean(RedisClient.class); RedisConnection<String, String> connection = client.connect(); System.out.println("PING: " + connection.ping()); connection.close(); MySpringBean mySpringBean = context.getBean(MySpringBean.class); System.out.println("PING: " + mySpringBean.ping()); context.close(); } }
参考文献:
【1】https://github.com/mp911de/lettuce
微信公众号: 架构师日常笔记 欢迎关注!