Redis服務器

  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

相關文章
相關標籤/搜索