1、什么是Jedis?
jedis是針對Java提供的用來連接Redis服務器的客戶端技術,就相當于連接數據庫需要jdbc一樣。 (連接mysql 需要使用jdbc、連接Redis需要使用Jedis )
配置maven的pom.xmI中配置
< dependency> < groupId> redis.clients
</ groupId> < artifactId> jedis
</ artifactId> < version> 3.3.0
</ version>
</ dependency>
2、案例
public class Demo1 {public static void main(String[] args) {// 一個jedis的就是一個連接Jedis jedis = new Jedis("192.168.43.131", 6379);jedis.set("id", "1002");jedis.set("username", "lisi");// 關閉連接jedis.close();}
}
注意:linux系統的防火墻若開啟了,需要放行6379端口。
public class Demo2 {public static void main(String[] args) {Jedis jedis = new Jedis("192.168.43.131", 6379);// 獲取所有的keySet<String> keys = jedis.keys("*");Iterator<String> iterator = keys.iterator();while (iterator.hasNext()) {String key = iterator.next();System.out.println(key);}// list類型jedis.lpush("list_k1", "a", "b", "c", "d");String v1 = jedis.rpop("list_k1");System.out.println(v1);// hash類型jedis.hset("hset_k1", "id", "1001");jedis.hset("hset_k1", "username", "lisi");String v3 = jedis.hget("hset_k1", "id");Map<String, String> map = jedis.hgetAll("hset_k1");// setjedis.sadd("set_k1", "a", "b", "c", "d");Set<String> setAllVale = jedis.smembers("set_k1");String v2 = jedis.spop("set_k1");System.out.println(v2);//zsetjedis.zadd("zset_k1", 20f, "zhangsan");jedis.zadd("zset_k1", 30f, "lisi");jedis.zadd("zset_k1", 10f, "wangwu");jedis.zadd("zset_k1", 350f, "zhaoliu");Set<String> zsetAllVale = jedis.zrange("zset_k1", 0, -1);jedis.close();}
}
public static void main(String[] args) {// 開啟三個連接Jedis jedis_master = new Jedis("192.168.43.131", 6379);Jedis jedis_slave1 = new Jedis("192.168.43.131", 6380);Jedis jedis_slave2 = new Jedis("192.168.43.131", 6381);// 配從不配主jedis_slave1.slaveof("192.168.43.131", 6379);jedis_slave2.slaveof("192.168.43.131", 6379);jedis_master.set("id", "1001");jedis_master.set("userName", "zhangsan");System.out.println(jedis_slave1.get("id"));System.out.println(jedis_slave2.get("userName"));// 斷開主從關系。// 若不斷開,即使三個連接關閉了,三個redis庫之間的主從關系還在。jedis_slave1.slaveofNoOne();jedis_slave2.slaveofNoOne();jedis_master.close();jedis_slave1.close();jedis_slave2.close();
}
public static void main(String[] args) {// 設置連接池的配置信息JedisPoolConfig config = new JedisPoolConfig();config.setMaxTotal(100);config.setMaxIdle(40);config.setTestOnBorrow(false); // 借出連接時不要測試,否則很影響性能config.setMaxWaitMillis(60 * 1000); // 60秒// 創建連接池,并獲取連接JedisPool jedisPool = new JedisPool(config, "192.168.43.131", 6379);Jedis jedis = jedisPool.getResource();System.out.println(jedis.get("userName"));jedis.close();jedisPool.close();
}
/*** 單例模式創建連接池*/
public class JedisPoolUtils {/* volatile修飾多線程并發訪問的共享變量時,當某個線程改變了共享變量的值,其他線程可以即時看到修改后的值。*/private static volatile JedisPool jedisPool = null;public static JedisPool getJedisPool() {if (jedisPool == null) {synchronized (JedisPoolUtils.class){if (jedisPool == null) {// 設置連接池的配置信息JedisPoolConfig config = new JedisPoolConfig();config.setMaxTotal(100);config.setMaxIdle(40);// 借出連接時不要測試,否則很影響性能config.setTestOnBorrow(false); config.setMaxWaitMillis(60 * 1000); // 60秒// 創建連接池jedisPool = new JedisPool(config, "192.168.43.131", 6379);}}}return jedisPool;}
}
redis cluster高可用集群
準備配置文件
sed 's/6379/6380/g' redis.conf > redis_6380.conf
sed 's/6379/6381/g' redis.conf > redis_6381.conf
sed 's/6379/6382/g' redis.conf > redis_6382.conf
sed 's/6379/6383/g' redis.conf > redis_6383.conf
sed 's/6379/6384/g' redis.conf > redis_6384.conf
sed 's/6379/6385/g' redis.conf > redis_6385.conf
查看幫助
cd /usr/local/redis/5.0.8
./bin/redis-cli --cluster help
搭建集群
./bin/redis-cli --cluster create 192.168.50.7:6380 192.168.50.7:6381 192.168.50.7:6382 192.168.50.7:6383 192.168.50.7:6384 192.168.50.7:6385 --cluster-replicas 1
#用以前方式連接,會發現有找不到槽位,會提示你轉到哪臺主機上去
./bin/redis-cli -h 192.168.50.7 -p 6380
#用redis-cli工具連接redis服務器時,加-c參數,會自動切換到指定槽位的redis服務器。-c是redis-cli特有的,jedis沒有-c這個參數。
./bin/redis-cli -h 192.168.50.7 -p 6380 -c
總結
以上是生活随笔 為你收集整理的【自撰】Redis客户端Jedis 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。