1 package cn.redis.util; 2 3 import redis.clients.jedis.BinaryClient; 4 import redis.clients.jedis.Jedis; 5 6 import java.util.HashMap; 7 import java.util.List; 8 import java.util.Map; 9 import java.util.Set; 10 11 public class MyRedis { 12 13 /** 14 * 在centos中,打開客戶端命令,進入redis/bin目錄下,./redis-cli命令 15 * 退出服務器命令:./redis-cli shutdown,redis會先保存好數據後,安全的關閉 16 * 暴力關閉,可能會丟失數據 .kill -9 17 * @param args 18 */ 19 public static void main(String[] args) { 20 Jedis redis = RedisPoolUtil.getRedis(); 21 22 // test_redisString(redis);//測試redis字符串數據類型 23 24 // test_redisHash(redis);//Redis 的數據類型:哈希 hash; 25 26 // test_redisList(redis);//Redis 的數據類型:list 鏈表; 27 28 // test_redisSet(redis);//Redis 的數據類型:set(不充許重複元素); //適用場景:跟蹤用戶購買了哪些商品信息,求並集等。 29 30 test_redisSortedset(redis);//Redis 的數據類型:sortedset; 有序集合 //適用場景:積分排名表,排行榜等 31 } 32 33 /** 34 * edis 的數據類型:sortedset; 有序集合 35 * 適用場景:積分排名表,排行榜等 36 * @param redis 37 */ 38 private static void test_redisSortedset(Jedis redis) { 39 //添加多個元素,若是有相同的就會覆蓋 40 Map<String, Double> map = new HashMap<>(); 41 map.put("內key4",63.9); 42 map.put("內key5",73.9); 43 map.put("內key6",103.9); 44 redis.zadd("sortedsetKey",map); 45 System.out.println("查看全部的內部key==>"+redis.zrange("sortedsetKey",0,-1)); 46 47 //查看內key2 的值 48 System.out.println(redis.zscore("sortedsetKey","內key2")); 49 50 //刪除內key3 51 System.out.println(redis.zrem("sortedsetKey","內key2")); 52 53 //按照指定範圍刪除 54 redis.zremrangeByScore("sortedsetKey",0,55.5); 55 56 //查看總共有多少 57 System.out.println(redis.zcard("sortedsetKey")); 58 59 //按照指定方位查看 60 System.out.println(redis.zrangeByScore("sortedsetKey",0,1000)); 61 62 //加分 63 redis.zincrby("sortedsetKey",100,"內key2"); 64 System.out.println(redis.zscore("sortedsetKey","內key2")); 65 66 //指定範圍內的個數 67 Long sortedsetKey = redis.zcount("sortedsetKey", 0, 40); 68 System.out.println(sortedsetKey); 69 70 //升序,查看指定的內key升序排名 71 System.out.println(redis.zrank("sortedsetKey","內key2")); 72 //降序,查看指定的內key降序排名 73 System.out.println(redis.zrevrank("sortedsetKey","內key2")); 74 75 } 76 77 /** 78 * Redis 的數據類型:set(不充許重複元素); 79 * 適用場景:跟蹤用戶購買了哪些商品信息,求並集等。 80 * 81 * @param redis 82 */ 83 private static void test_redisSet(Jedis redis) { 84 //sets數據類型添加數據 85 redis.sadd("setskey","values4","values5","values6"); 86 System.out.println(redis.smembers("setskey")); 87 88 //刪除兩個 89 redis.srem("setskey","values5","values1"); 90 System.out.println(redis.smembers("setskey")); 91 92 //查看是否存在指定元素 93 Boolean sismember = redis.sismember("setskey", "values1"); 94 System.out.println(sismember); 95 96 //插入數據到setskey2中 97 redis.sadd("setskey2","values6","values4","s2的值3"); 98 System.out.println(redis.smembers("setskey")); 99 System.out.println(redis.smembers("setskey2")); 100 //求差集,以setskey爲基準 101 System.out.println(redis.sdiff("setskey","setskey2")); 102 //求差集,以ssetskey2爲基準 103 System.out.println(redis.sdiff("setskey2","setskey")); 104 105 //求並集 106 System.out.println(redis.sunion("setskey2","setskey")); 107 108 //求交集 109 System.out.println(redis.sinter("setskey2","setskey")); 110 111 //查詢元素個數 112 System.out.println(redis.scard("setskey2")); 113 114 //返回隨機元素 115 System.out.println(redis.srandmember("setskey2")); 116 117 //setskey2與setskey的差集存儲到s3中 118 System.out.println(redis.sdiffstore("s3","setskey2","setskey")); 119 System.out.println(redis.smembers("s3")); 120 121 //setskey2與setskey的交集存儲到s4中 122 System.out.println(redis.sinterstore("s4","setskey2","setskey")); 123 System.out.println(redis.smembers("s4")); 124 125 //setskey2與setskey的並集存儲到s5中 126 System.out.println(redis.sunionstore("s5","setskey2","setskey")); 127 System.out.println(redis.smembers("s5")); 128 } 129 130 /** 131 * Redis 的數據類型:list 鏈表; 132 * @param redis 133 */ 134 private static void test_redisList(Jedis redis) { 135 // 插入數據,,//從頭部左邊插入 136 redis.lpush("list鏈表", "value1", "value2", "value3", "value4"); 137 System.out.println("查看全部list鏈表中的數據"+redis.lrange("list鏈表",0,-1)); 138 139 //從尾部,右邊插入 140 redis.rpush("list鏈表","右邊vlaue1","右邊vlaue2","右邊vlaue3"); 141 System.out.println(redis.lrange("list鏈表",0,99)); 142 143 //判斷是否能夠插入 144 Long lpush = redis.lpush("list2", "能夠插入"); 145 System.out.println(lpush); 146 //判斷是否能夠插入 147 Long lpushx = redis.lpushx("list3", "不能夠插入"); 148 System.out.println(lpushx); 149 150 System.out.println(redis.lrange("list鏈表",0,-1)); 151 152 //從頭部彈出一個 153 String list鏈表 = redis.lpop("list鏈表"); 154 System.out.println(list鏈表); 155 156 //從尾部彈出一個 157 String list鏈表1 = redis.rpop("list鏈表"); 158 System.out.println(list鏈表1); 159 160 //查看還剩下幾個 161 Long list鏈表2 = redis.llen("list鏈表"); 162 System.out.println(list鏈表2); 163 164 //刪除兩個value2 165 redis.lrem("list鏈表",2,"value2"); 166 List<String> list鏈表3 = redis.lrange("list鏈表", 0, -1); 167 System.out.println(list鏈表3); 168 169 //刪除全部的youbianvalue1 , 0表示刪除全部 170 redis.lrem("list鏈表",0,"右邊vlaue1"); 171 System.out.println(redis.lrange("list鏈表",0,-1)); 172 173 //負數表示從尾部開始刪除,-1表示從尾部刪除一個,-2表示刪除兩個 174 redis.lrem("list鏈表",-1,"右邊vlaue1"); 175 System.out.println(redis.lrange("list鏈表",0,-1)); 176 177 //根據下標改變元素的值 178 redis.lset("list鏈表",0,"我是下標爲0,改變了值"); 179 redis.lrange("list鏈表",0,-1).forEach(ls-> System.out.println(ls)); 180 181 //在aa後面插入bb 182 redis.linsert("list鏈表", BinaryClient.LIST_POSITION.AFTER,"value1","我是在value1後面插隊的值"); 183 System.out.println(redis.lrange("list鏈表",0,-1)); 184 //在aa前面插入cc 185 redis.linsert("list鏈表", BinaryClient.LIST_POSITION.BEFORE,"value1","我是在value1前面插隊的值"); 186 System.out.println(redis.lrange("list鏈表",0,-1)); 187 188 //新建list2 189 redis.lpush("list2","list2中的值1","list2中的值2","list2中的值3"); 190 //將list1的尾部元素彈出,而且壓壓到sit2頭 191 redis.rpoplpush("list鏈表","list2"); 192 System.out.println("list1中的數據"+redis.lrange("list鏈表",0,-1)); 193 System.out.println("list2中的數據"+redis.lrange("list2",0,-1)); 194 } 195 196 /** 197 * Redis 的數據類型:哈希 hash; 198 * @param redis 199 */ 200 private static void test_redisHash(Jedis redis) { 201 //存一次 202 redis.hset("哈希用法外部key","內部key","內部value"); 203 System.out.println("拿到哈希中的內部的value===》"+redis.hget("哈希用法外部key","內部key")); 204 205 //村多個 206 Map<String, String> hash = new HashMap<>(); 207 hash.put("內部key1","內部value1"); 208 hash.put("內部key2","1"); 209 hash.put("內部key3","內部value3"); 210 redis.hmset("waikey",hash); 211 System.out.println(redis.hmget("waikey","內部key1","內部key2","內部key3")); 212 213 //一次刪除兩個 214 Long hdel = redis.hdel("waikey", "內部key1", "內部key2"); 215 System.out.println("返回刪除的數量===》"+hdel); 216 //一次所有刪除 217 Long waikey = redis.del("waikey"); 218 System.out.println(waikey); 219 System.out.println(redis.get("waikey")); 220 221 //查看刪除後的map集合中的數據 222 System.out.println(redis.hmget("waikey","內部key1","內部key2","內部key3")); 223 224 //在原有的基礎上加20 225 Long aLong = redis.hincrBy("數字", "age", 20); 226 System.out.println(aLong); 227 228 //判斷是否存在,存在返回(true),不然返回(false) 229 Boolean hexists = redis.hexists("數字", "age"); 230 System.out.println(hexists); 231 232 //獲取元素的個數 233 Long 數字 = redis.hlen("數字"); 234 System.out.println(數字); 235 236 //獲取哈希中全部key 237 Set<String> ks = redis.hkeys("數字"); 238 ks.forEach(k-> System.out.print(k+" , ")); 239 240 System.out.println(); 241 242 //獲取哈希中全部的value 243 List<String> vs = redis.hvals("數字"); 244 vs.forEach(v-> System.out.print(v+" , ")); 245 } 246 247 /** 248 * 測試redis字符串數據類型 249 */ 250 private static void test_redisString(Jedis redis) { 251 redis.set("這是key","經過key,拿到字符串值"); 252 System.out.println(redis.get("這是key")); 253 254 String k = redis.get("無value的key"); 255 System.out.println("沒有定義value的key==》"+k);//返回爲null 256 System.out.println("查看redis中全部的key集==》"+redis.keys("*")); 257 Long age = redis.incr("age"); 258 System.out.println(age);//自增1,若是沒有,則返回爲0(默認爲0) 259 260 Long age1 = redis.decr("age"); 261 System.out.println(age1);//自減1,若是沒有,則返回0,(默認爲0) 262 263 Long append = redis.append("這是key", "==>進行追加的值");//字符串追加 264 String s = redis.get("這是key");//返回,使用append追加後的值 265 System.out.println(s); 266 267 redis.set("money","1000"); 268 String money = redis.get("money"); 269 System.out.println(money); 270 271 Long money1 = redis.incrBy("money", 200); 272 System.out.println("在原有的基礎上再次增長200===》"+money1); 273 274 Long money2 = redis.decrBy("money", 1000); 275 System.out.println("在原有的基礎上再次減小1000===》"+money2); 276 277 Long money3 = redis.del("money"); 278 System.out.println("刪除key,若是有key則返回1,不然返回0==》"+money3); 279 280 } 281 282 }
package cn.redis.util;
import redis.clients.jedis.BinaryClient;import redis.clients.jedis.Jedis;
import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Set;
public class MyRedis {
/** * 在centos中,打開客戶端命令,進入redis/bin目錄下,./redis-cli命令 * 退出服務器命令:./redis-cli shutdown,redis會先保存好數據後,安全的關閉 * 暴力關閉,可能會丟失數據 .kill -9 * @param args */ public static void main(String[] args) { Jedis redis = RedisPoolUtil.getRedis();
// test_redisString(redis);//測試redis字符串數據類型
// test_redisHash(redis);//Redis 的數據類型:哈希 hash;
// test_redisList(redis);//Redis 的數據類型:list 鏈表;
// test_redisSet(redis);//Redis 的數據類型:set(不充許重複元素); //適用場景:跟蹤用戶購買了哪些商品信息,求並集等。
test_redisSortedset(redis);//Redis 的數據類型:sortedset; 有序集合 //適用場景:積分排名表,排行榜等 }
/** * edis 的數據類型:sortedset; 有序集合 * 適用場景:積分排名表,排行榜等 * @param redis */ private static void test_redisSortedset(Jedis redis) { //添加多個元素,若是有相同的就會覆蓋 Map<String, Double> map = new HashMap<>(); map.put("內key4",63.9); map.put("內key5",73.9); map.put("內key6",103.9); redis.zadd("sortedsetKey",map); System.out.println("查看全部的內部key==>"+redis.zrange("sortedsetKey",0,-1));
//查看內key2 的值 System.out.println(redis.zscore("sortedsetKey","內key2"));
//刪除內key3 System.out.println(redis.zrem("sortedsetKey","內key2"));
//按照指定範圍刪除 redis.zremrangeByScore("sortedsetKey",0,55.5);
//查看總共有多少 System.out.println(redis.zcard("sortedsetKey"));
//按照指定方位查看 System.out.println(redis.zrangeByScore("sortedsetKey",0,1000));
//加分 redis.zincrby("sortedsetKey",100,"內key2"); System.out.println(redis.zscore("sortedsetKey","內key2"));
//指定範圍內的個數 Long sortedsetKey = redis.zcount("sortedsetKey", 0, 40); System.out.println(sortedsetKey);
//升序,查看指定的內key升序排名 System.out.println(redis.zrank("sortedsetKey","內key2")); //降序,查看指定的內key降序排名 System.out.println(redis.zrevrank("sortedsetKey","內key2"));
}
/** * Redis 的數據類型:set(不充許重複元素); * 適用場景:跟蹤用戶購買了哪些商品信息,求並集等。 * * @param redis */ private static void test_redisSet(Jedis redis) { //sets數據類型添加數據 redis.sadd("setskey","values4","values5","values6"); System.out.println(redis.smembers("setskey"));
//刪除兩個 redis.srem("setskey","values5","values1"); System.out.println(redis.smembers("setskey"));
//查看是否存在指定元素 Boolean sismember = redis.sismember("setskey", "values1"); System.out.println(sismember);
//插入數據到setskey2中 redis.sadd("setskey2","values6","values4","s2的值3"); System.out.println(redis.smembers("setskey")); System.out.println(redis.smembers("setskey2")); //求差集,以setskey爲基準 System.out.println(redis.sdiff("setskey","setskey2")); //求差集,以ssetskey2爲基準 System.out.println(redis.sdiff("setskey2","setskey"));
//求並集 System.out.println(redis.sunion("setskey2","setskey"));
//求交集 System.out.println(redis.sinter("setskey2","setskey"));
//查詢元素個數 System.out.println(redis.scard("setskey2"));
//返回隨機元素 System.out.println(redis.srandmember("setskey2"));
//setskey2與setskey的差集存儲到s3中 System.out.println(redis.sdiffstore("s3","setskey2","setskey")); System.out.println(redis.smembers("s3"));
//setskey2與setskey的交集存儲到s4中 System.out.println(redis.sinterstore("s4","setskey2","setskey")); System.out.println(redis.smembers("s4"));
//setskey2與setskey的並集存儲到s5中 System.out.println(redis.sunionstore("s5","setskey2","setskey")); System.out.println(redis.smembers("s5")); }
/** * Redis 的數據類型:list 鏈表; * @param redis */ private static void test_redisList(Jedis redis) {// 插入數據,,//從頭部左邊插入 redis.lpush("list鏈表", "value1", "value2", "value3", "value4"); System.out.println("查看全部list鏈表中的數據"+redis.lrange("list鏈表",0,-1));
//從尾部,右邊插入 redis.rpush("list鏈表","右邊vlaue1","右邊vlaue2","右邊vlaue3"); System.out.println(redis.lrange("list鏈表",0,99));
//判斷是否能夠插入 Long lpush = redis.lpush("list2", "能夠插入"); System.out.println(lpush); //判斷是否能夠插入 Long lpushx = redis.lpushx("list3", "不能夠插入"); System.out.println(lpushx);
System.out.println(redis.lrange("list鏈表",0,-1));
//從頭部彈出一個 String list鏈表 = redis.lpop("list鏈表"); System.out.println(list鏈表);
//從尾部彈出一個 String list鏈表1 = redis.rpop("list鏈表"); System.out.println(list鏈表1);
//查看還剩下幾個 Long list鏈表2 = redis.llen("list鏈表"); System.out.println(list鏈表2);
//刪除兩個value2 redis.lrem("list鏈表",2,"value2"); List<String> list鏈表3 = redis.lrange("list鏈表", 0, -1); System.out.println(list鏈表3);
//刪除全部的youbianvalue1 , 0表示刪除全部 redis.lrem("list鏈表",0,"右邊vlaue1"); System.out.println(redis.lrange("list鏈表",0,-1));
//負數表示從尾部開始刪除,-1表示從尾部刪除一個,-2表示刪除兩個 redis.lrem("list鏈表",-1,"右邊vlaue1"); System.out.println(redis.lrange("list鏈表",0,-1));
//根據下標改變元素的值 redis.lset("list鏈表",0,"我是下標爲0,改變了值"); redis.lrange("list鏈表",0,-1).forEach(ls-> System.out.println(ls));
//在aa後面插入bb redis.linsert("list鏈表", BinaryClient.LIST_POSITION.AFTER,"value1","我是在value1後面插隊的值"); System.out.println(redis.lrange("list鏈表",0,-1)); //在aa前面插入cc redis.linsert("list鏈表", BinaryClient.LIST_POSITION.BEFORE,"value1","我是在value1前面插隊的值"); System.out.println(redis.lrange("list鏈表",0,-1));
//新建list2 redis.lpush("list2","list2中的值1","list2中的值2","list2中的值3"); //將list1的尾部元素彈出,而且壓壓到sit2頭 redis.rpoplpush("list鏈表","list2"); System.out.println("list1中的數據"+redis.lrange("list鏈表",0,-1)); System.out.println("list2中的數據"+redis.lrange("list2",0,-1)); }
/** * Redis 的數據類型:哈希 hash; * @param redis */ private static void test_redisHash(Jedis redis) { //存一次 redis.hset("哈希用法外部key","內部key","內部value"); System.out.println("拿到哈希中的內部的value===》"+redis.hget("哈希用法外部key","內部key"));
//村多個 Map<String, String> hash = new HashMap<>(); hash.put("內部key1","內部value1"); hash.put("內部key2","1"); hash.put("內部key3","內部value3"); redis.hmset("waikey",hash); System.out.println(redis.hmget("waikey","內部key1","內部key2","內部key3"));
//一次刪除兩個 Long hdel = redis.hdel("waikey", "內部key1", "內部key2"); System.out.println("返回刪除的數量===》"+hdel); //一次所有刪除 Long waikey = redis.del("waikey"); System.out.println(waikey); System.out.println(redis.get("waikey"));
//查看刪除後的map集合中的數據 System.out.println(redis.hmget("waikey","內部key1","內部key2","內部key3"));
//在原有的基礎上加20 Long aLong = redis.hincrBy("數字", "age", 20); System.out.println(aLong);
//判斷是否存在,存在返回(true),不然返回(false) Boolean hexists = redis.hexists("數字", "age"); System.out.println(hexists);
//獲取元素的個數 Long 數字 = redis.hlen("數字"); System.out.println(數字);
//獲取哈希中全部key Set<String> ks = redis.hkeys("數字"); ks.forEach(k-> System.out.print(k+" , "));
System.out.println();
//獲取哈希中全部的value List<String> vs = redis.hvals("數字"); vs.forEach(v-> System.out.print(v+" , ")); }
/** * 測試redis字符串數據類型 */ private static void test_redisString(Jedis redis) { redis.set("這是key","經過key,拿到字符串值"); System.out.println(redis.get("這是key"));
String k = redis.get("無value的key"); System.out.println("沒有定義value的key==》"+k);//返回爲null System.out.println("查看redis中全部的key集==》"+redis.keys("*")); Long age = redis.incr("age"); System.out.println(age);//自增1,若是沒有,則返回爲0(默認爲0)
Long age1 = redis.decr("age"); System.out.println(age1);//自減1,若是沒有,則返回0,(默認爲0)
Long append = redis.append("這是key", "==>進行追加的值");//字符串追加 String s = redis.get("這是key");//返回,使用append追加後的值 System.out.println(s);
redis.set("money","1000"); String money = redis.get("money"); System.out.println(money);
Long money1 = redis.incrBy("money", 200); System.out.println("在原有的基礎上再次增長200===》"+money1);
Long money2 = redis.decrBy("money", 1000); System.out.println("在原有的基礎上再次減小1000===》"+money2);
Long money3 = redis.del("money"); System.out.println("刪除key,若是有key則返回1,不然返回0==》"+money3);
}
}java