Java如何使用redis

来源:互联网 发布:网络会员管理系统免费 编辑:程序博客网 时间:2024/06/06 13:20

Java中使用jedis来操作redis,需要把jedis依赖的jar包添加到工程中.

一.操作单机版的redis

第一步:创建一个Jedis对象。需要指定服务端的ip及端口。
第二步:使用Jedis对象操作数据库,每个redis命令对应一个方法。
第三步:打印结果。
第四步:关闭Jedis

@Testpublic void testJedis() throws Exception {// 第一步:创建一个Jedis对象。需要指定服务端的ip及端口。Jedis jedis = new Jedis("192.168.25.153", 6379);// 第二步:使用Jedis对象操作数据库,每个redis命令对应一个方法。String result = jedis.get("hello");// 第三步:打印结果。System.out.println(result);// 第四步:关闭Jedisjedis.close();}



二.连接单机版使用连接池

第一步:创建一个JedisPool对象。需要指定服务端的ip及端口。
第二步:从JedisPool中获得Jedis对象。
第三步:使用Jedis操作redis服务器。
第四步:操作完毕后关闭jedis对象,连接池回收资源。
第五步:关闭JedisPool对象。

@Testpublic void testJedisPool() throws Exception {// 第一步:创建一个JedisPool对象。需要指定服务端的ip及端口。JedisPool jedisPool = new JedisPool("192.168.25.153", 6379);// 第二步:从JedisPool中获得Jedis对象。Jedis jedis = jedisPool.getResource();// 第三步:使用Jedis操作redis服务器。jedis.set("jedis", "test");String result = jedis.get("jedis");System.out.println(result);// 第四步:操作完毕后关闭jedis对象,连接池回收资源。jedis.close();// 第五步:关闭JedisPool对象。jedisPool.close();}


三.连接集群版redis

第一步:使用JedisCluster对象。需要一个Set<HostAndPort>参数。Redis节点的列表。
第二步:直接使用JedisCluster对象操作redis。在系统中单例存在。
第三步:打印结果
第四步:系统关闭前,关闭JedisCluster对象。

@Testpublic void testJedisCluster() throws Exception {// 第一步:使用JedisCluster对象。需要一个Set<HostAndPort>参数。Redis节点的列表。Set<HostAndPort> nodes = new HashSet<>();nodes.add(new HostAndPort("192.168.25.153", 7001));nodes.add(new HostAndPort("192.168.25.153", 7002));nodes.add(new HostAndPort("192.168.25.153", 7003));nodes.add(new HostAndPort("192.168.25.153", 7004));nodes.add(new HostAndPort("192.168.25.153", 7005));nodes.add(new HostAndPort("192.168.25.153", 7006));JedisCluster jedisCluster = new JedisCluster(nodes);// 第二步:直接使用JedisCluster对象操作redis。在系统中单例存在。jedisCluster.set("hello", "100");String result = jedisCluster.get("hello");// 第三步:打印结果System.out.println(result);// 第四步:系统关闭前,关闭JedisCluster对象。jedisCluster.close();}


四.业务逻辑中添加缓存

1.接口封装

public interface JedisClient {String set(String key, String value);String get(String key);Boolean exists(String key);Long expire(String key, int seconds);Long ttl(String key);Long incr(String key);Long hset(String key, String field, String value);String hget(String key, String field);Long hdel(String key, String... field);}

2.单机版

2.1实现类

public class JedisClientPool implements JedisClient {@Autowiredprivate JedisPool jedisPool;@Overridepublic String set(String key, String value) {Jedis jedis = jedisPool.getResource();String result = jedis.set(key, value);jedis.close();return result;}@Overridepublic String get(String key) {Jedis jedis = jedisPool.getResource();String result = jedis.get(key);jedis.close();return result;}@Overridepublic Boolean exists(String key) {Jedis jedis = jedisPool.getResource();Boolean result = jedis.exists(key);jedis.close();return result;}@Overridepublic Long expire(String key, int seconds) {Jedis jedis = jedisPool.getResource();Long result = jedis.expire(key, seconds);jedis.close();return result;}@Overridepublic Long ttl(String key) {Jedis jedis = jedisPool.getResource();Long result = jedis.ttl(key);jedis.close();return result;}@Overridepublic Long incr(String key) {Jedis jedis = jedisPool.getResource();Long result = jedis.incr(key);jedis.close();return result;}@Overridepublic Long hset(String key, String field, String value) {Jedis jedis = jedisPool.getResource();Long result = jedis.hset(key, field, value);jedis.close();return result;}@Overridepublic String hget(String key, String field) {Jedis jedis = jedisPool.getResource();String result = jedis.hget(key, field);jedis.close();return result;}@Overridepublic Long hdel(String key, String... field) {Jedis jedis = jedisPool.getResource();Long result = jedis.hdel(key, field);jedis.close();return result;}}

2.2 配置:applicationContext-redis.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans4.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context4.2.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx4.2.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util4.2.xsd"><!-- 配置单机版的连接 --><bean id="jedisPool" class="redis.clients.jedis.JedisPool"><constructor-arg name="host" value="192.168.25.153"></constructor-arg><constructor-arg name="port" value="6379"></constructor-arg></bean><bean id="jedisClientPool" class="cn.e3mall.jedis.JedisClientPool"/></beans>


3.集群版

3.1实现类

package cn.e3mall.jedis;import org.springframework.beans.factory.annotation.Autowired;import redis.clients.jedis.JedisCluster;public class JedisClientCluster implements JedisClient {@Autowiredprivate JedisCluster jedisCluster;@Overridepublic String set(String key, String value) {return jedisCluster.set(key, value);}@Overridepublic String get(String key) {return jedisCluster.get(key);}@Overridepublic Boolean exists(String key) {return jedisCluster.exists(key);}@Overridepublic Long expire(String key, int seconds) {return jedisCluster.expire(key, seconds);}@Overridepublic Long ttl(String key) {return jedisCluster.ttl(key);}@Overridepublic Long incr(String key) {return jedisCluster.incr(key);}@Overridepublic Long hset(String key, String field, String value) {return jedisCluster.hset(key, field, value);}@Overridepublic String hget(String key, String field) {return jedisCluster.hget(key, field);}@Overridepublic Long hdel(String key, String... field) {return jedisCluster.hdel(key, field);}}


3.2配置

<!-- 集群版的配置 --><bean id="jedisCluster" class="redis.clients.jedis.JedisCluster"><constructor-arg><set><bean class="redis.clients.jedis.HostAndPort"><constructor-arg name="host" value="192.168.25.153"></constructor-arg><constructor-arg name="port" value="7001"></constructor-arg></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg name="host" value="192.168.25.153"></constructor-arg><constructor-arg name="port" value="7002"></constructor-arg></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg name="host" value="192.168.25.153"></constructor-arg><constructor-arg name="port" value="7003"></constructor-arg></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg name="host" value="192.168.25.153"></constructor-arg><constructor-arg name="port" value="7004"></constructor-arg></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg name="host" value="192.168.25.153"></constructor-arg><constructor-arg name="port" value="7005"></constructor-arg></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg name="host" value="192.168.25.153"></constructor-arg><constructor-arg name="port" value="7006"></constructor-arg></bean></set></constructor-arg></bean><bean id="jedisClientCluster" class="cn.e3mall.jedis.JedisClientCluster"/>


注意:

单机版和集群版不能共存,使用单机版时注释集群版的配置。使用集群版,把单机版注释。


4.封装代码测试

@Testpublic void testJedisClient() throws Exception {//初始化Spring容器ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-redis.xml");//从容器中获得JedisClient对象JedisClient jedisClient = applicationContext.getBean(JedisClient.class);jedisClient.set("first", "100");String result = jedisClient.get("first");System.out.println(result);}


原创粉丝点击