日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

【自撰】Redis客户端Jedis

發布時間:2023/12/20 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【自撰】Redis客户端Jedis 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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、案例

  • String類型
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端口。

  • list、hash、set、zset類型
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();} }
  • jedis實現主從復制
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(); }
  • jedis連接池
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高可用集群

準備配置文件

  • 修改redis.conf文件中的如下配置

    • Pid文件名字 6379_pid

    • port

    • Log文件名字 log_6379.log

    • dump_6379.rdb名字

    • bind

    • 以下配置放開注釋:

      • cluster-enabled yes
      • cluster-config-file nodes-6379.conf
      • cluster-time-out
  • 將配置文件redis.conf另存為redis_638x.conf,并將redis.conf中的所有6379改為638x

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
  • (- -cluster-replicas 1) :1表示1臺主機配1臺從機,2就表示配2臺從機

  • 命令中6個ip:port,前三個會成為主機

  • 搭建集群,至少需要有三組主從復制。

  • 客戶端連接redis集群

#用以前方式連接,會發現有找不到槽位,會提示你轉到哪臺主機上去 ./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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。