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);}
阅读全文
0 0
- Java如何使用redis
- JAVA如何使用Redis
- #杂问#java中如何使用redis?
- Java中如何使用Redis做缓存
- 如何在java里面使用redis(六)
- 如何在java里面使用redis(六)
- 如何使用redis的java客户端
- Redis及如何在Java中使用Redis
- Java中如何使用Redis做缓存应用
- 如何将 Azure Redis 缓存与 Java 配合使用
- Redis 实战 ---- Java 使用 Redis
- redis-如何在工程中使用redis
- redis-如何在工程中使用redis
- redis-如何在工程中使用redis
- C#中如何使用redis--ServiceStack.Redis
- java中使用redis
- java使用redis
- Java使用Redis入门
- vmware提示:此虚拟机似乎正在使用中,无法取得所有权的解决办法
- Linux内核中提供的一些字符串转换函数
- awk查看与统计nginx访问日志
- PAT 1115. Counting Nodes in a BST (30) 搜索树建立 + 各层节点数量判断
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛【solved:9 / 10】
- Java如何使用redis
- spring事务管理
- MSDNet(Multi-Scale Dense Convolutional Networks)算法笔记
- 二叉树题目
- Python基础知识实例讲解
- Oxford Deep NLP学习笔记1:Word Level Semantics
- Qt 侧边栏
- 我的第一篇博客2017
- 水平集重叠细胞分割