Redis RedisTemplate 使用總結

Redis RedisTemplate 使用總結

Redis的String數據結構

  • void set(K key, V value);
redisTemplate.opsForValue().set("num","123");
redisTemplate.opsForValue().get("num")  輸出結果爲123
  • void set(K key, V value, long timeout, TimeUnit unit);
redisTemplate.opsForValue().set("num","123",10, TimeUnit.SECONDS);
redisTemplate.opsForValue().get("num")設置的是10秒失效,十秒之內查詢有結果,十秒之後返回爲null
  • void set(K key, V value, long offset); 覆寫(overwrite)給定 key 所儲存的字符串值,從偏移量 offset 開始
template.opsForValue().set("key","hello world");
template.opsForValue().set("key","redis", 6);
System.out.println("***************"+template.opsForValue().get("key"));
結果:***************hello redis
  • V getAndSet(K key, V value); 設置鍵的字符串值並返回其舊值
template.opsForValue().set("getSetTest","test");
System.out.println(template.opsForValue().getAndSet("getSetTest","test2"));
結果:test
  • Integer append(K key, String value); 如果key已經存在並且是一個字符串,則該命令將該值追加到字符串的末尾。如果鍵不存在,則它被創建並設置爲空字符串,因此APPEND在這種特殊情況下將類似於SET。
template.opsForValue().append("test","Hello");
System.out.println(template.opsForValue().get("test"));
template.opsForValue().append("test","world");
System.out.println(template.opsForValue().get("test"));
Hello
Helloworld

Redis的List數據結構

  • Long size(K key);返回存儲在鍵中的列表的長度。如果鍵不存在,則將其解釋爲空列表,並返回0。當key存儲的值不是列表時返回錯誤。
System.out.println(template.opsForList().size("list"));
6
  • Long leftPush(K key, V value);
    將所有指定的值插入存儲在鍵的列表的頭部。如果鍵不存在,則在執行推送操作之前將其創建爲空列表。(從左邊插入)
template.opsForList().leftPush("list","java");
template.opsForList().leftPush("list","python");
template.opsForList().leftPush("list","c++");
返回的結果爲推送操作後的列表的長度
1
2
3
  • Long leftPushAll(K key, V… values); 批量把一個數組插入到列表中
String[] strs = new String[]{"1","2","3"};
template.opsForList().leftPushAll("list",strs);
System.out.println(template.opsForList().range("list",0,-1));
[3, 2, 1]
  • Long rightPush(K key, V value); 將所有指定的值插入存儲在鍵的列表的頭部。如果鍵不存在,則在執行推送操作之前將其創建爲空列表。(從右邊插入)
template.opsForList().rightPush("listRight","java");
template.opsForList().rightPush("listRight","python");
template.opsForList().rightPush("listRight","c++");
1
2
3
  • Long rightPushAll(K key, V… values);
String[] strs = new String[]{"1","2","3"};
template.opsForList().rightPushAll("list",strs);
//range 打印0到最後的值
System.out.println(template.opsForList().range("list",0,-1));
[1, 2, 3]
  • Long rightPush(K key, V value);
template.opsForList().rightPush("listRight","java");
template.opsForList().rightPush("listRight","python");
template.opsForList().rightPush("listRight","c++");
1
2
3
  • Long rightPushAll(K key, V… values);
String[] strs = new String[]{"1","2","3"};
template.opsForList().rightPushAll("list",strs);
System.out.println(template.opsForList().range("list",0,-1));
[1, 2, 3]
  • void set(K key, long index, V value); 在列表中index的位置設置value值
System.out.println(template.opsForList().range("listRight",0,-1));
template.opsForList().set("listRight",1,"setValue");
System.out.println(template.opsForList().range("listRight",0,-1));
[java, python, oc, c++]
[java, setValue, oc, c++]
  • Long remove(K key, long count, Object value);
    從存儲在鍵中的列表中刪除等於值的元素的第一個計數事件。
    計數參數以下列方式影響操作:
    count> 0:刪除等於從頭到尾移動的值的元素。
    count <0:刪除等於從尾到頭移動的值的元素。
    count = 0:刪除等於value的所有元素。
System.out.println(template.opsForList().range("listRight",0,-1));
template.opsForList().remove("listRight",1,"setValue");//將刪除列表中存儲的列表中第一次次出現的“setValue”。
System.out.println(template.opsForList().range("listRight",0,-1));
[java, setValue, oc, c++]
[java, oc, c++]
  • V index(K key, long index); 根據下表獲取列表中的值,下標是從0開始的
System.out.println(template.opsForList().range("listRight",0,-1));
System.out.println(template.opsForList().index("listRight",2));
[java, oc, c++]
c++
  • V leftPop(K key); 彈出最左邊的元素,彈出之後該值在列表中將不復存在
System.out.println(template.opsForList().range("list",0,-1));
System.out.println(template.opsForList().leftPop("list"));
System.out.println(template.opsForList().range("list",0,-1));
[c++, python, oc, java, c#, c#]
c++
[python, oc, java, c#, c#]
  • V rightPop(K key); 彈出最右邊的元素,彈出之後該值在列表中將不復存在
System.out.println(template.opsForList().range("list",0,-1));
System.out.println(template.opsForList().rightPop("list"));
System.out.println(template.opsForList().range("list",0,-1));
[python, oc, java, c#, c#]
c#
[python, oc, java, c#]

Redis的Hash數據機構

  • Long delete(H key, Object… hashKeys); 刪除給定的哈希hashKeys
System.out.println(template.opsForHash().delete("redisHash","name"));
//entries 打印這個哈希表
System.out.println(template.opsForHash().entries("redisHash"));
1
{class=6, age=28.1}
  • Boolean hasKey(H key, Object hashKey); 確定哈希hashKey是否存在
System.out.println(template.opsForHash().hasKey("redisHash","666"));
System.out.println(template.opsForHash().hasKey("redisHash","777"));
true
false
  • Object get(H key, Object hashKey);
System.out.println(template.opsForHash().get("redisHash","age"));
26
  • Set keys(H key); 獲取key所對應的散列表的key
System.out.println(template.opsForHash().keys("redisHash"));
//redisHash所對應的散列表爲{class=1, name=666, age=27}
[name, class, age]
  • Long size(H key); 獲取key所對應的散列表的大小個數
System.out.println(template.opsForHash().size("redisHash"));
//redisHash所對應的散列表爲{class=1, name=666, age=27}
3
  • void putAll(H key, Map<? extends HK, ? extends HV> m); 使用m中提供的多個散列字段設置到key對應的散列表中
Map<String,Object> testMap = new HashMap();
testMap.put("name","666");
testMap.put("age",27);
testMap.put("class","1");
template.opsForHash().putAll("redisHash1",testMap);
System.out.println(template.opsForHash().entries("redisHash1"));
{class=1, name=jack, age=27}
  • void put(H key, HK hashKey, HV value); 設置散列hashKey的值
template.opsForHash().put("redisHash","name","666");
template.opsForHash().put("redisHash","age",26);
template.opsForHash().put("redisHash","class","6");
System.out.println(template.opsForHash().entries("redisHash"));
{age=26, class=6, name=666}
  • List values(H key) 獲取整個哈希存儲的值根據密鑰
System.out.println(template.opsForHash().values("redisHash"));
[tom, 26, 6]
  • Map<HK, HV> entries(H key); 獲取整個哈希存儲根據密鑰
System.out.println(template.opsForHash().entries("redisHash"));
{age=26, class=6, name=tom}
  • Cursor<Map.Entry<HK, HV>> scan(H key, ScanOptions options);
    使用Cursor在key的hash中迭代,相當於迭代器。
Cursor<Map.Entry<Object, Object>> curosr = template.opsForHash().scan("redisHash", 
  ScanOptions.ScanOptions.NONE);
    while(curosr.hasNext()){
        Map.Entry<Object, Object> entry = curosr.next();
        System.out.println(entry.getKey()+":"+entry.getValue());
    }
age:27
class:6
name:666

Redis的Set數據結構

  • Long add(K key, V… values); 無序集合中添加元素,返回添加個數
    也可以直接在add裏面添加多個值 如:template.opsForSet().add(“setTest”,“aaa”,“bbb”)
String[] strs= new String[]{"str1","str2"};
System.out.println(template.opsForSet().add("setTest", strs));
2
  • Long remove(K key, Object… values); 移除集合中一個或多個成員
String[] strs = new String[]{"str1","str2"};
System.out.println(template.opsForSet().remove("setTest",strs));
2
  • V pop(K key); 移除並返回集合中的一個隨機元素
System.out.println(template.opsForSet().pop("setTest"));
System.out.println(template.opsForSet().members("setTest"));
bbb
[aaa, ccc]
  • Boolean move(K key, V value, K destKey); 將 member 元素從 source 集合移動到 destination 集合
template.opsForSet().move("setTest","aaa","setTest2");
System.out.println(template.opsForSet().members("setTest"));
System.out.println(template.opsForSet().members("setTest2"));
[ccc]
[aaa]
  • Long size(K key); 無序集合的大小長度
System.out.println(template.opsForSet().size("setTest"));
1
  • Set members(K key); 返回集合中的所有成員
System.out.println(template.opsForSet().members("setTest"));
[ddd, bbb, aaa, ccc]
  • Cursor scan(K key, ScanOptions options); 遍歷set
Cursor<Object> curosr = template.opsForSet().scan("setTest", ScanOptions.NONE);
  while(curosr.hasNext()){
     System.out.println(curosr.next());
  }
ddd
bbb
aaa
ccc

Redis的ZSet數據結構

  • Boolean add(K key, V value, double score); 新增一個有序集合,存在的話爲false,不存在的話爲true
System.out.println(template.opsForZSet().add("zset1","zset-1",1.0));
true
  • Long add(K key, Set<TypedTuple> tuples); 新增一個有序集合
ZSetOperations.TypedTuple<Object> objectTypedTuple1 = new DefaultTypedTuple<>("zset-5",9.6);
ZSetOperations.TypedTuple<Object> objectTypedTuple2 = new DefaultTypedTuple<>("zset-6",9.9);
Set<ZSetOperations.TypedTuple<Object>> tuples = new HashSet<ZSetOperations.TypedTuple<Object>>();
tuples.add(objectTypedTuple1);
tuples.add(objectTypedTuple2);
System.out.println(template.opsForZSet().add("zset1",tuples));
System.out.println(template.opsForZSet().range("zset1",0,-1));
[zset-1, zset-2, zset-3, zset-4, zset-5, zset-6]
  • Long remove(K key, Object… values); 從有序集合中移除一個或者多個元素
System.out.println(template.opsForZSet().range("zset1",0,-1));
System.out.println(template.opsForZSet().remove("zset1","zset-6"));
System.out.println(template.opsForZSet().range("zset1",0,-1));
[zset-1, zset-2, zset-3, zset-4, zset-5, zset-6]
1
[zset-1, zset-2, zset-3, zset-4, zset-5]
  • Long rank(K key, Object o);
    返回有序集中指定成員的排名,其中有序集成員按分數值遞增(從小到大)順序排列
System.out.println(template.opsForZSet().range("zset1",0,-1));
System.out.println(template.opsForZSet().rank("zset1","zset-2"));
[zset-2, zset-1, zset-3, zset-4, zset-5]
0   //表明排名第一
  • Set range(K key, long start, long end); 通過索引區間返回有序集合成指定區間內的成員,其中有序集成員按分數值遞增(從小到大)順序排列
System.out.println(template.opsForZSet().range("zset1",0,-1));
[zset-2, zset-1, zset-3, zset-4, zset-5]
  • Long count(K key, double min, double max); 通過分數返回有序集合指定區間內的成員個數
System.out.println(template.opsForZSet().rangeByScore("zset1",0,5));
System.out.println(template.opsForZSet().count("zset1",0,5));
[zset-2, zset-1, zset-3]
3
  • Long size(K key); 獲取有序集合的成員數,內部調用的就是zCard方法
System.out.println(template.opsForZSet().size("zset1"));
6
  • Double score(K key, Object o); 獲取指定成員的score值
System.out.println(template.opsForZSet().score("zset1","zset-1"));
2.2
  • Long removeRange(K key, long start, long end);
    移除指定索引位置的成員,其中有序集成員按分數值遞增(從小到大)順序排列
System.out.println(template.opsForZSet().range("zset2",0,-1));
System.out.println(template.opsForZSet().removeRange("zset2",1,2));
System.out.println(template.opsForZSet().range("zset2",0,-1));
[zset-1, zset-2, zset-3, zset-4]
2
[zset-1, zset-4]
  • Cursor<TypedTuple> scan(K key, ScanOptions options); 遍歷zset
Cursor<ZSetOperations.TypedTuple<Object>> cursor = template.opsForZSet().scan("zzset1", ScanOptions.NONE);
    while (cursor.hasNext()){
       ZSetOperations.TypedTuple<Object> item = cursor.next();
       System.out.println(item.getValue() + ":" + item.getScore());
    }
zset-1:1.0
zset-2:2.0
zset-3:3.0
zset-4:6.0

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章