redis--(二)基础数据类型详解

String类型

redis--(二)基础数据类型详解

redis--(二)基础数据类型详解

 

Hash类型

redis--(二)基础数据类型详解

redis--(二)基础数据类型详解

 

 

List类型

redis--(二)基础数据类型详解

 

flushdb 清空所有

redis--(二)基础数据类型详解

redis--(二)基础数据类型详解

redis--(二)基础数据类型详解

上图片中 2表示:删除个数

 redis--(二)基础数据类型详解

redis--(二)基础数据类型详解

 

set类型

 redis--(二)基础数据类型详解

 redis--(二)基础数据类型详解

redis--(二)基础数据类型详解

 

zset类型

redis--(二)基础数据类型详解

redis--(二)基础数据类型详解

 

 redis--(二)基础数据类型详解

redis--(二)基础数据类型详解

redis--(二)基础数据类型详解

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
Set<HostAndPort> jedisClusterNode=new HashSet<HostAndPort>();
    jedisClusterNode.add(new HostAndPort("10.10.10.76"7001));
    jedisClusterNode.add(new HostAndPort("10.10.10.76"7002));
    jedisClusterNode.add(new HostAndPort("10.10.10.76"7003));
    jedisClusterNode.add(new HostAndPort("10.10.10.76"7004));
    jedisClusterNode.add(new HostAndPort("10.10.10.76"7005));
    jedisClusterNode.add(new HostAndPort("10.10.10.76"7006));
     
    JedisPoolConfig cfg=new JedisPoolConfig();
    cfg.setMaxIdle(100);
    cfg.setMaxIdle(20);
    cfg.setMaxWaitMillis(-1);
    cfg.setTestOnBorrow(true);
     
    JedisCluster jc=new JedisCluster(jedisClusterNode,6000,100,cfg);
     
    String nameKey="tk";
     
    jc.del(nameKey);
    // testString
    //一、set、get 设值  
    //jc.set("name", "yuanzhen");
    //System.out.println(jc.get("name"));
    //指定key拼接值
    //jc.append("name", "nihao");
    //System.out.println(jc.get("name"));
    //删除指定key
    //jc.del("name");
    //System.out.println(jc.get("name"));      
     
    //二、setnx 如果key不存在 设值 返回1, 如果key存在返回1
    //System.out.println(jc.setnx(nameKey, "yuanzhen"));
     
    //三、设值过期时间  秒为单位
    //System.out.println(jc.setex(nameKey, 10, "张三"));//时间单位是秒
    //System.out.println(jc.get(nameKey));
     
    //四、批量操作key
    /*
       keySlot算法中,如果key包含{},就会使用第一个{}内部的字符串作为hash key,这样就可以保证拥有同样{}内部字符串的key就会拥有相同slot。
               注意:这样的话,本来可以hash到不同的slot中的数据都放到了同一个slot中,所以使用的时候要注意数据不要太多导致一个slot数据量过大,数据分布不均匀!
                
       jedisCluster.mset("sf","d","aadf","as");
                                 直接这样写,会报错:redis.clients.jedis.exceptions.JedisClusterException: No way to dispatch this command to Redis Cluster because keys have different slots.
                                 这是因为key不在同一个slot中
    */
     
    /*
        String prefix = "gw:cyber";
        String KEY_SPLIT = ":"; //用于隔开缓存前缀与缓存键值
        //设值
        String result = jc.mset("{" + prefix + KEY_SPLIT + "}" + "name", "张三", "{" + prefix + KEY_SPLIT + "}" + "age", "23", "{" + prefix + KEY_SPLIT + "}" + "address", "adfsa", "{" + prefix + KEY_SPLIT + "}" + "score", "100");
        System.out.println(result);
        //取值
        String name = jc.get("{" + prefix + KEY_SPLIT + "}" + "age");
        System.out.println(name);
     
        List<String> values = jc.mget("{" + prefix + KEY_SPLIT + "}" + "name", "{" + prefix + KEY_SPLIT + "}" + "age", "{" + prefix + KEY_SPLIT + "}" + "address");
        System.out.println(values);
    */   
         
    /*
        Long del = jc.del("{" + prefix + KEY_SPLIT + "}" + "age");
        System.out.println(del);
 
        List<String> values = jc.mget("{" + prefix + KEY_SPLIT + "}" + "name", "{" + prefix + KEY_SPLIT + "}" + "age", "{" + prefix + KEY_SPLIT + "}" + "address");
        System.out.println(values);
    */
     
     
    //五、msetnx 命令:他只会在所有给定的key都不存在的情况下进行设值
     
    /*
     String prefix = "gw:cyber";
     String KEY_SPLIT = ":"; //用于隔开缓存前缀与缓存键值
     Long msetnx = jc.msetnx(
                "{" + prefix + KEY_SPLIT + "}" + "name", "张三",
                "{" + prefix + KEY_SPLIT + "}" + "age", "23",
                "{" + prefix + KEY_SPLIT + "}" + "address", "adfsa",
                "{" + prefix + KEY_SPLIT + "}" + "score", "100");
    System.out.println(msetnx);   // 1
     
    System.out.println(jc.mget(
            "{" + prefix + KEY_SPLIT + "}" + "name",
            "{" + prefix + KEY_SPLIT + "}" + "age",
            "{" + prefix + KEY_SPLIT + "}" + "address",
            "{" + prefix + KEY_SPLIT + "}" + "score"));//[张三, 23, adfsa, 100]
     
    //name这个key已经存在,由于mset是原子的,该条指令将全部失败
    msetnx = jc.msetnx(
            "{" + prefix + KEY_SPLIT + "}" + "phone", "110",
            "{" + prefix + KEY_SPLIT + "}" + "name", "张三",
            "{" + prefix + KEY_SPLIT + "}" + "abc", "asdfasfdsa");
    System.out.println(msetnx);  // 0
   */
       
    
    // 六、list 集合操作 模拟队列
    /*
     String prefix = "gw:cyber";
     String KEY_SPLIT = ":"; //用于隔开缓存前缀与缓存键值
     String key = prefix + KEY_SPLIT + "queue";
     jc.del(key);
      
     //lpush 先进后出                                  
     System.out.println(jc.lpush(key, "1","2","3"));
     System.out.println(jc.lpush(key, "4"));
     System.out.println(jc.lpush(key, "5"));
     //从头取到尾      5 4 3 2 1
     System.out.println(jc.lrange(key, 0, -1));
     //指定索引查询 0 start
     System.out.println("索引2的值"+jc.lindex(key, 2));  // 3
      
     //lpop 取值
     for(int i = 0 ; i< 5 ; i ++){
            System.out.println(jc.lpop(key));
     }
      
     // 同上   rpush 先进先出       rpop 取值
       
     */
     
     
    //七、 Hash 类型
    /*
    jc.hset("userObj", "name", "yuanzhen");
    jc.hset("userObj", "age", "18");
    System.out.println(jc.hgetAll("userObj"));
    */
     
    //八、 Set集合     不允许元素重复的无序集合
    /*
     String prefix = "gw:cyber";
     String KEY_SPLIT = ":"; //用于隔开缓存前缀与缓存键值
     String keyA = "{" + prefix + KEY_SPLIT + "set}a";
     String keyB = "{" + prefix + KEY_SPLIT + "set}b";
     jc.del(keyA);
     jc.del(keyB);
      
     System.out.println(jc.sadd(keyA, "a","b","c"));  //给集合添加数据
     System.out.println(jc.sadd(keyA, "a"));     //集合是不可以重复的
     System.out.println(jc.sadd(keyA, "d"));
     System.out.println(jc.smembers(keyA));    //返回集合所有数据
     System.out.println(jc.scard(keyA));       //返回集合的长度
     System.out.println("c是否在集合A中:"+jc.sismember(keyA, "c"));  //判断元素是否在key 集合中
      
      
     System.out.println(jc.sadd(keyB, "a", "f", "c"));//给集合添加数据
     System.out.println(jc.sdiff(keyA, keyB));//差集 keyA-keyB
     System.out.println(jc.sinter(keyA, keyB));//交集
     System.out.println(jc.sunion(keyA, keyB));//并集
     */