java程式碼中操作Redis:單機redis、叢集redis(spring+redis整合)
一、準備
- 關於redis的一些安裝,可以檢視我的幾篇文章自行安裝:Redis目錄。
- 一個web專案,我這邊一直用的一個github專案是:https://github.com/gubaijin/buildmavenweb
- 匯入java的Redis客戶端依賴包Jedis:
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
二、單機Redis
- 簡單單機用程式碼測試:
Jedis jedis = new Jedis("localhost"); jedis.set("foo", "bar"); String value = jedis.get("foo");
- 跟spring整合,大家可以直接點選檢視:J2ee專案從0搭建(十一):在專案中整合Redis,用於資料的儲存或者快取
三、程式碼中連線redis叢集
//使用jedis在程式碼中連線redis叢集,因為是叢集,可以自動發現,也同樣只要一個地址就行了
Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
//Jedis Cluster will attempt to discover cluster nodes automatically
jedisClusterNodes.add(new HostAndPort("192.168.240.142", 6379));
JedisCluster jc = new JedisCluster(jedisClusterNodes);
jc.set("foo", "bar");
String value = jc.get("foo");
System.out.println(value);
執行後發現可以正常取到:用redis客戶端到redis叢集中檢視驗證,存入時我們連線的是142,此時我們在144上進行驗證:
四、spring-data-redis連線redis叢集
因為實際中我們不可能每次使用的時候都去new一下,然後連線,所以這邊推薦使用spring整合redis,並且使用較新的包(版本較低的可能不支援redis叢集)。
- 匯入jedis包後,還要匯入spring-data-redis:
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.7.2.RELEASE</version> </dependency>
- 建立一個redisCluster.properties:
#redis setting redis.host1=192.168.240.142 redis.port1=6379 #jedis setting jedis.maxIdle=6 jedis.minEvictableIdleTimeMillis=300000 jedis.numTestsPerEvictionRun=3 jedis.timeBetweenEvictionRunsMillis=60000
- 建立一個spring-redisCluster.xml:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd" default-lazy-init="true"> <context:component-scan base-package="com.spring.demo.redis" /> <!-- 引入redis配置檔案 --> <context:property-placeholder location="classpath:redisCluster.properties" /> <!-- 連線池配置 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <!-- 連線池中最大空閒的連線數 --> <property name="maxIdle" value="${jedis.maxIdle}"></property> <!-- 連線空閒的最小時間,達到此值後空閒連線將可能會被移除。負值(-1)表示不移除. --> <property name="minEvictableIdleTimeMillis" value="${jedis.minEvictableIdleTimeMillis}"></property> <!-- 對於“空閒連結”檢測執行緒而言,每次檢測的連結資源的個數。預設為3 --> <property name="numTestsPerEvictionRun" value="${jedis.numTestsPerEvictionRun}"></property> <!-- “空閒連結”檢測執行緒,檢測的週期,毫秒數。如果為負值,表示不執行“檢測執行緒”。預設為-1. --> <property name="timeBetweenEvictionRunsMillis" value="${jedis.timeBetweenEvictionRunsMillis}"></property> </bean> <!-- 叢集配置 --> <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster"> <constructor-arg> <set> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="${redis.host1}"/> <constructor-arg name="port" value="${redis.port1}"/> </bean> </set> </constructor-arg> <constructor-arg name="poolConfig" ref="jedisPoolConfig"/> </bean> </beans>
- 新建一個 RedisClusterUtils.class用來存放一些統一的redis叢集操作:
package com.spring.demo.redis; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import redis.clients.jedis.JedisCluster; import java.util.List; @Component public class RedisClusterUtils { @Autowired private JedisCluster jedisCluster; /** * 得到指定key值的value * @param key */ public Object get(String key){ return jedisCluster.get(key); } /** * 儲存指定key值的value * @param key * @param value */ public void set(String key, String value){ jedisCluster.set(key, value); } /** * 儲存指定key值的value * @param key * @param list */ public void set(String key, List<String> list){ jedisCluster.rpush(key, (String[]) list.toArray()); } /** * 刪除指定key的value * @param key */ public void del(String key){ jedisCluster.del(key); } }
- 程式碼執行驗證:
//spring整合redis叢集 ApplicationContext ctx = new ClassPathXmlApplicationContext("/spring-redisCluster.xml"); RedisClusterUtils redisClusterUtils = (RedisClusterUtils) ctx.getBean("redisClusterUtils"); redisClusterUtils.set("redisCluster", "RedisClusterUtils"); System.out.println(redisClusterUtils.get("redisCluster"));
- 客戶端命令列連線叢集驗證,這次我們選擇143進行驗證
五、資料地址:
相關文章
- spring+redis整合SpringRedis
- Jedis操作單節點redis,叢集及redisTemplate操作redis叢集(一)Redis
- java操作Redis3.0.6叢集JavaRedisS3
- 【Redis】用python操作redis叢集RedisPython
- java操作redis叢集連線池JavaRedis
- spring+redis的整合,使用spring-data-redis來整合SpringRedis
- Redis單機及其叢集的搭建Redis
- Redis系列:搭建Redis叢集(叢集模式)Redis模式
- redis 叢集Redis
- redis叢集Redis
- 使用java程式碼操作redisJavaRedis
- 認識Redis叢集——Redis ClusterRedis
- Redis(單機&叢集)Pipeline工具類Redis
- Redis cluster 叢集Redis
- redis叢集搭建Redis
- redis系列:叢集Redis
- 搭建 Redis 叢集Redis
- Redis Cluster(叢集)Redis
- Redis 叢集方法Redis
- Redis叢集方案Redis
- Redis 叢集方案Redis
- Redis-叢集Redis
- redis叢集原理Redis
- Spring Boot整合Redis叢集(Cluster模式)Spring BootRedis模式
- redis叢集密碼問題Redis密碼
- K8S如何部署Redis(單機、叢集)K8SRedis
- Redis叢集搭建與簡單使用Redis
- 深入淺出Redis-redis哨兵叢集Redis
- 【Redis】Redis Cluster-叢集故障轉移Redis
- redis高可用之redis3.0叢集RedisS3
- Jedis使用連線池操作redis叢集Redis
- redis cluster 叢集故障恢復操作思路Redis
- redis與叢集實用操作筆記Redis筆記
- Redis(5.0) 叢集搭建Redis
- redis叢集的搭建Redis
- 搭建Redis原生叢集Redis
- docker-redis叢集DockerRedis
- Redis--叢集搭建Redis