摘要:一部署新建文件夾存放下載官方英文網址中文網址解壓編譯可以不執行可以不執行運行命令出現的錯誤解析命令未找到解決安裝能上網,再次沒有那個文件或目錄解決,再次啟動服務啟動后即可連接使用,也可使用客戶端如果修改配置文件了,指定配置文件
一.部署redis
1.新建文件夾存放:
mkdir /home/henlafeng/redis cd redis/
2.下載:
http://redis.io/ 官方英文網址 http://www.redis.cn/ 中文網址 wget http://download.redis.io/releases/redis-3.2.9.tar.gz
3.解壓:
tar -zxvf redis-3.2.9.tar.gz cd redis-3.2.9
4.編譯:
make make install (可以不執行) Redis Test (可以不執行) 運行make命令出現的錯誤解析: “gcc命令未找到”解決:安裝gcc:yum install gcc-c++ (能上網),再次make “Jemalloc/jemalloc.h:沒有那個文件或目錄”解決:make distclean ,再次make
5.啟動redis服務:啟動后java即可連接使用,也可使用redis客戶端
cd /redis-3.2.9/src ./redis-server 如果修改配置文件了,指定配置文件啟動使用: ./redis-server ../redis1.conf (后面加新配置文件的路徑)
6.啟動客戶端:
cd /redis-3.2.9/src ./redis-cli
7.關閉客戶端:
單實例關閉:redis-cli shutdown 多實例關閉:指定端口關閉:redis-cli -p6379 shutdown
8.關閉redis服務:
ctrl + c 終止正在執行的命令 或 新開個終端殺掉redis的進程: ps -ef|grep redis 查看進程 kill 進程號 殺掉進程
二.java連接使用redis
1)準備工作:啟動redis服務和導入jar包:
commons-pool2-2.4.2.jar jedis-2.9.0.jar
2)測試連接:
Jedis jedis = new Jedis("192.168.31.XX", 6379);//參數:ip和redis端口 jedis.auth("XXXXX"); //輸入密碼 System.out.println(jedis.ping());// 打印pong連接成功
3)使用演示:
鍵(key)、字符串(String)、列表(List) 集合(Set)、哈希(Hash)、有序集合(Zset/sorted set) 以上是redis的數據類型,根據數據類型順序一一演示java中常用操作
// key
jedis.flushDB();//清除當前庫所有數據 jedis.set("k1", "v1");//賦值 jedis.set("k2", "v2"); jedis.set("k3", "v3"); System.out.println("0exists(k1):" + jedis.exists("k1"));//是否存在:true jedis.move("k3", 2);//k3移動到2號庫,默認是0號庫 System.out.println("0庫的key:" + jedis.keys("*")); jedis.select(2);//切換到2號庫 System.out.println("2庫的key:" + jedis.keys("*"));//查看所有key System.out.println("2exists(k3):" + jedis.exists("k3"));// true jedis.select(0);//切換到0號庫 System.out.println("0庫的k3的值:" + jedis.get("k3"));// 取值:null System.out.println("0庫k1的存活時間:" + jedis.ttl("k1"));///存活時間 System.out.println("0庫k2的存活時間:" + jedis.ttl("k2")); jedis.expire("k2", 1);//設置k2的有效時間為1秒 Thread.sleep(1000); System.out.println("0庫k1的存活時間:" + jedis.ttl("k1"));// -1永久有效 System.out.println("0庫k2的存活時間:" + jedis.ttl("k2"));// -2已過期 System.out.println("0庫k2的值:" + jedis.get("k2"));// 過期的值get獲取不到 jedis.del("k1"); System.out.println("0庫k1的值:" + jedis.get("k1"));// del的值get獲取不到 // 0庫無數據,2庫有k3 jedis.select(2); System.out.println("2庫k3的值:" + jedis.get("k3"));// v3 jedis.set("k3", "vv"); System.out.println("2庫k3的值:" + jedis.get("k3"));// vv,新值覆蓋舊值 System.out.println("2庫k3的類型" + jedis.type("k3"));// 查看類型:string jedis.lpush("mylist", "1"); jedis.lpush("mylist", "2"); jedis.lpush("mylist", "3"); jedis.lpush("mylist", "4"); jedis.lpush("mylist", "5"); System.out.println("mylist的值:" + jedis.lrange("mylist", 0, -1));// 5,4,3,2,1 System.out.println("mylist的類型:" + jedis.type("mylist"));// list
// String
jedis.flushDB(); jedis.set("k1", "v1"); jedis.append("k1", "2345");// k1值后面追加2345 System.out.println(jedis.get("k1"));// v12345 System.out.println(jedis.strlen("k1"));// 長度:6 jedis.set("k2", "4"); jedis.incr("k2");// 每次加1 jedis.incr("k2"); jedis.incr("k2"); jedis.decr("k2");// 每次減1 jedis.decr("k2"); System.out.println(jedis.get("k2"));// 5 jedis.incrBy("k2", 5);// 加5 jedis.decrBy("k2", 4);// 減4 System.out.println(jedis.get("k2"));// 6 System.out.println(jedis.getrange("k1", 0, 2));// 下標0到下標2:v12 System.out.println(jedis.getrange("k1", 0, -1));// 查看k1值:v12345 jedis.setrange("k1", 0, "DDD");// 下標0開始的值改為DDD,覆蓋原位置相應的值 System.out.println(jedis.get("k1"));// DDD345 System.out.println(jedis.setnx("k1", "v1"));// k1不存在就set進去:0 k1存在set失敗 System.out.println(jedis.setnx("k3", "v3"));// k3不存在就set進去:1 k3不存在set成功 jedis.mset("k1", "v1", "k2", "v2", "k3", "v3");// 同時賦值多個,逗號間隔 System.out.println(jedis.mget("k1", "k2", "k3"));// [v1, v2, v3] System.out.println(jedis.msetnx("k3", "v3", "k4", "v4"));// 不存在就賦值多個:0 // k3存在所以賦值失敗 System.out.println(jedis.msetnx("k4", "v4", "k5", "v5"));// 1 System.out.println(jedis.mget("k4", "k5"));// [v4, v5]
// list
jedis.select(0); jedis.flushDB(); jedis.lpush("list01", "1");// 左邊存入 lpush的list01:[5, 4, 3, 2, 1] jedis.lpush("list01", "2"); jedis.lpush("list01", "3"); jedis.lpush("list01", "4"); jedis.lpush("list01", "5"); jedis.rpush("list02", "1");// 右邊存入 rpush的list02:[1, 2, 3, 4, 5] jedis.rpush("list02", "2"); jedis.rpush("list02", "3"); jedis.rpush("list02", "4"); jedis.rpush("list02", "5"); Listlrange01 = jedis.lrange("list01", 0, -1);//查看所有 List lrange02 = jedis.lrange("list02", 0, -1); System.out.println("lpush的list01:" + lrange01.toString());// 正進反出 System.out.println("rpush的list02:" + lrange02.toString());// 正進正出 String lpop01 = jedis.lpop("list01");// 左邊出棧 String lpop02 = jedis.lpop("list02");// 左邊出棧 System.out.println("list01的lpop:" + lpop01);// list01的lpop:5 System.out.println("list02的lpop:" + lpop02);// list02的lpop:1 String rpop01 = jedis.rpop("list01"); String rpop02 = jedis.rpop("list02"); System.out.println("list01的rpop:" + rpop01);// list01的rpop:1 System.out.println("list02的rpop:" + rpop02);// list02的rpop:5 System.out.println(jedis.lindex("list01", 2));// 下標3的值:2 System.out.println(jedis.lindex("list02", 2));// 下標3的值:4 System.out.println(jedis.llen("list01"));// 集合長度:3 System.out.println(jedis.llen("list02"));// 集合長度:3 System.out.println(jedis.lindex("list01", 3));// null System.out.println(jedis.lindex("list02", 3));// null jedis.rpush("list03", "1"); jedis.rpush("list03", "1"); jedis.rpush("list03", "1"); jedis.rpush("list03", "2"); jedis.rpush("list03", "2"); jedis.rpush("list03", "2"); jedis.rpush("list03", "3"); jedis.rpush("list03", "3"); jedis.rpush("list03", "3"); jedis.rpush("list03", "4"); jedis.rpush("list03", "5"); jedis.rpush("list03", "6"); jedis.lrem("list03", 2, "1");// 移除2個1 jedis.lrem("list03", 2, "2");// 移除2個2 jedis.lrem("list03", 2, "3");// 移除2個3 System.out.println(jedis.lrange("list03", 0, -1));// [1, 2, 3, 4, 5, 6] jedis.del("list01");//刪除元素 jedis.lpush("list01", "1"); jedis.lpush("list01", "2"); jedis.lpush("list01", "3"); jedis.lpush("list01", "4"); jedis.lpush("list01", "5"); jedis.lpush("list01", "6"); jedis.lpush("list01", "7"); jedis.lpush("list01", "8"); jedis.ltrim("list01", 0, 4);// 截取下標0到4 System.out.println(jedis.lrange("list01", 0, -1));// [8, 7, 6, 5, 4] jedis.ltrim("list03", 0, 4);// 截取下標0到4 System.out.println(jedis.lrange("list03", 0, -1));// [1, 2, 3, 4, 5] jedis.rpoplpush("list01", "list03");// list01的尾數放到list03的頭值 System.out.println(jedis.lrange("list01", 0, -1));// [8, 7, 6, 5] System.out.println(jedis.lrange("list03", 0, -1));// [4, 1, 2, 3, 4, 5] jedis.lset("list03", 0, "6");// list03下標0的值為6 System.out.println(jedis.lrange("list03", 0, -1));// [6, 1, 2, 3, 4, 5] jedis.linsert("list01", LIST_POSITION.BEFORE, "7", "java");// list01的值7前插入值java jedis.linsert("list01", LIST_POSITION.AFTER, "6", "redis");// list01的值6后插入值redis System.out.println(jedis.lrange("list01", 0, -1));// [8, java, 7, 6, // redis, 5] jedis.sort("list01");// 排序
// set
jedis.flushDB(); jedis.sadd("set01", "1"); jedis.sadd("set01", "1"); jedis.sadd("set01", "2"); jedis.sadd("set01", "2"); jedis.sadd("set01", "3"); jedis.sadd("set01", "3"); System.out.println(jedis.smembers("set01"));// 查詢所有:[1, 2, 3] System.out.println(jedis.sismember("set01", "1"));// 是否存在值1:true System.out.println(jedis.scard("set01"));// 獲取元素個數:3 jedis.srem("set01", "1");// 移除值1 System.out.println(jedis.smembers("set01"));// [2, 3] jedis.sadd("set02", "1"); jedis.sadd("set02", "2"); jedis.sadd("set02", "3"); jedis.sadd("set02", "4"); jedis.sadd("set02", "5"); jedis.sadd("set02", "6"); jedis.sadd("set02", "7"); jedis.srandmember("set02", 3);// 隨機取3個數字 System.out.println(jedis.srandmember("set02", 3));// [5, 1, 6] [1, 3, 6]... jedis.spop("set01");// 隨機出棧 System.out.println(jedis.spop("set01"));// 3 2 System.out.println(jedis.smembers("set01"));// [] 出棧就沒了 jedis.sadd("set03", "x"); jedis.sadd("set03", "y"); jedis.sadd("set03", "z"); jedis.smove("set02", "set03", "4");// set02的4移動到set03 System.out.println(jedis.smembers("set02"));// [1, 2, 3, 5, 6, 7] System.out.println(jedis.smembers("set03"));// [4, y, z, x] // 數學集合類 jedis.del("set01"); jedis.sadd("set01", "1"); jedis.sadd("set01", "2"); jedis.sadd("set01", "3"); jedis.sadd("set01", "a"); jedis.sadd("set01", "b"); jedis.sdiff("set01", "set02");// 差集:在第一個set里面而不在后面任何一個set里面的項 System.out.println(jedis.sdiff("set01", "set02"));// 以set01為標準的差集: [b, // a] System.out.println(jedis.sdiff("set02", "set01"));// 以set02為標準的差集:[7, 6, // 5] jedis.sinter("set01", "set02");// 交集:每個set都有的項 System.out.println(jedis.sinter("set01", "set02"));// [2, 1, 3] jedis.sunion("set01", "set02");// 并集:所有set的總和 System.out.println(jedis.sunion("set01", "set02"));//[2, b, 7, a, 5, 6, 1, 3]
// hash-map
jedis.flushDB(); jedis.hset("user", "id", "11"); System.out.println(jedis.hget("user", "id"));// 11 jedis.hset("user", "name", "z3"); System.out.println(jedis.hget("user", "name"));// z3 Mapmap = new HashMap (); map.put("name", "l4"); map.put("age", "26"); jedis.hmset("customer", map); List list01 = jedis.hmget("customer", "name"); System.out.println(list01);// [l4] jedis.hgetAll("customer");// 獲取customer所有信息 System.out.println(jedis.hgetAll("customer"));// {name=l4, age=26} jedis.hdel("user", "name");// 刪除user的name System.out.println(jedis.hgetAll("user"));// 查看所有:{id=11} System.out.println(jedis.hlen("customer"));// 長度:2 System.out.println(jedis.hlen("user"));// 長度:1 jedis.hexists("user", "name");// 是否存在name System.out.println(jedis.hexists("user", "name"));// false System.out.println(jedis.hexists("customer", "name"));// true System.out.println(jedis.hkeys("customer"));// 獲取所有key:[age, name] System.out.println(jedis.hvals("customer"));// 獲取所有value:[26, l4] System.out.println(jedis.hincrBy("customer", "age", 2));// age加2:28 jedis.hset("customer", "score", "91.5"); System.out.println(jedis.hincrByFloat("customer", "score", 0.5));// score加0.5:92.0 jedis.hsetnx("user", "name", "Z3");// 不存在就set System.out.println(jedis.hsetnx("customer", "age", "18"));// 0 jedis.hsetnx("customer", "email", "123@163.com"); Iterator iterator = jedis.hkeys("customer").iterator(); while (iterator.hasNext()) { String key = iterator.next(); System.out.println("key:" + key);// key:score key:email key:age // key:name }
// zset
jedis.flushDB(); jedis.zadd("zset01", 60, "v1"); jedis.zadd("zset01", 70, "v2"); jedis.zadd("zset01", 80, "v3"); jedis.zadd("zset01", 90, "v4"); jedis.zadd("zset01", 100, "v5"); System.out.println(jedis.zrange("zset01", 0, -1));// [v1, v2, v3, v4, // v5] System.out.println(jedis.zrangeByScore("zset01", 60, 90));// [v1, v2, // v3, v4] System.out.println(jedis.zrangeByScore("zset01", 60, 90, 2, 2));// 60-90之間取下標2開始的2個值:[v3, // v4] jedis.zrem("zset01", "v5");//移除v5元素 System.out.println(jedis.zrange("zset01", 0, -1));// [v1, v2, v3, v4] System.out.println(jedis.zcard("zset01"));//長度:4 System.out.println(jedis.zcount("zset01", 60, 80));//60-80的個數:3 System.out.println(jedis.zrank("zset01", "v4"));//下標值:3 System.out.println(jedis.zscore("zset01", "v4"));//v3的值:90.0 System.out.println(jedis.zrevrank("zset01", "v4"));//逆序獲得下標值:0 System.out.println(jedis.zrevrangeByScore("zset01", 90, 60));//逆序獲取90-60的值:[v4, v3, v2, v1]
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67259.html
摘要:部署環境及架構操作系統版本版本版本服務器信息在詳細介紹部署集群前,先給大家展示下集群的邏輯架構。其他操作更新刪除查看刪除除此之外,你可以刪除,如刪除上的格式為服務名字,不必關心從哪個上刪除了。 本文通過實際操作來演示Kubernetes的使用,因為環境有限,集群部署在本地3個ubuntu上,主要包括如下內容: 部署環境介紹,以及Kubernetes集群邏輯架構 安裝部署Open v...
摘要:部署環境及架構操作系統版本版本版本服務器信息在詳細介紹部署集群前,先給大家展示下集群的邏輯架構。其他操作更新刪除查看刪除除此之外,你可以刪除,如刪除上的格式為服務名字,不必關心從哪個上刪除了。 本文通過實際操作來演示Kubernetes的使用,因為環境有限,集群部署在本地3個ubuntu上,主要包括如下內容: 部署環境介紹,以及Kubernetes集群邏輯架構 安裝部署Open v...
摘要:此命令下載測試鏡像并在容器中運行它。國內很多云服務商都提供了加速器服務,例如阿里云加速器注冊用戶并且申請加速器,會獲得如這樣的地址。獲取鏡像阿里云鏡像庫上有大量的高質量的鏡像可以用,這里我們就說一下怎么獲取這些鏡像并運行。 showImg(https://segmentfault.com/img/remote/1460000012924583); 這篇文章是我學習 Docker 的記錄...
摘要:節點管理器將利用該聲明該集群服務。在本示例當中,我們將部署一項服務。此標記用于告知公布端口作為該服務的可用端口。將此稱為入口負載均衡。當外部系統調用某項服務時,接收節點會接受流量并利用提供的內部服務對其進行負載均衡。 最新版本Docker Engine v1.12中,包含了多項與Docker Swarm緊密相關的功能變更。在今天的文章中,數人云將和大家探討如何利用Docker的Swar...
閱讀 1814·2021-10-09 09:44
閱讀 2690·2021-09-22 15:38
閱讀 2451·2021-09-09 09:33
閱讀 686·2021-09-07 09:58
閱讀 1786·2021-09-02 15:41
閱讀 2485·2019-08-30 15:55
閱讀 1796·2019-08-30 15:55
閱讀 533·2019-08-30 15:44