1. 程式人生 > >Redis常見資料結構的操作

Redis常見資料結構的操作

redis常見資料結構操作

ValueOperations對String資料結構進行操作

  • void set(K key, V value);
{
redisTemplate.opsForValue().set("userName","ziwen");
redisTemplate.opsForValue().get("userName");//ziwen
}
  • void set(K key, V value, long timeout, TimeUnit unit);指定時間,多久之後過期
{
redisTemplate.opsForValue().set("userName","ziwen"
,10,TimeUnit.SECONDS); redisTemplate.opsForValue().get("userName");//ziwen,10s之後就會返回null }
  • void set(K key, V value, long offset);//從偏移量offset開始處覆寫key對應的值.
{
redisTemplate.opsForValue().set("userName","ziwen");
redisTemplate.opsForValue().set("userName","ziwenwang",6); 
}
  • Boolean setIfAbsent(K key, V value);判斷是否存在
{
template.opsForValue().setIfAbsent("ziwen","ziwen");//當返回 true 的時候,表示不存在.當返回 false的時候,表示存在
}
  • multiSet void multiSet(Map

Redis的List資料結構

{
List<V> range(K key, long start, long end);返回儲存在鍵中的列表的指定元素。偏移開始和停止是基於零的索引,其中0是列表的第一個元素(列表的頭部),1是下一個元素
}
{
void trim(K key, long start, long end);//獲取指定區間的值,閉區間.0是開始位置,-1是倒數第一個,-2是倒數第二個
}
{
Long leftPush(K key, V value);
將所有指定的值插入儲存在鍵的列表的頭部。如果鍵不存在,則在執行推送操作之前將其建立為空列表。(從左邊插入)
}
{
  Long leftPushAll(K key, V... values);批量把一個數組插入到列表中
}
{
Long leftPushAll(K key, Collection<V> values);批量把一個集合插入到列表中
}
{
Long leftPushIfPresent(K key, V value);只有存在key對應的列表才能將這個value值插入到key所對應的列表中
}
{
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開始的
}
{
 V leftPop(K key);//彈出最左邊的元素,彈出之後該值在列表中將不復存在   
}
{
V leftPop(K key, long timeout, TimeUnit unit);
移出並獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止  
}

Redis的Hash資料機構

{
void put(H key, HK hashKey, HV value);設定雜湊hashKey的值
}
{
 Map<HK, HV> entries(H key);//獲取的是鍵值對集合   
}
{
 List<HV> values(H key);//獲取的只有值得集合   
 tips:
        redisTemplate.opsForHash().put("hash","name","ziwen");
        redisTemplate.opsForHash().put("hash","pw","ziwen710");
        redisTemplate.opsForHash().entries("hash");
        //返回值為:{name=ziwen,pw=ziwen710}
       //返回為:[ziwen,ziwen710],獲取整個雜湊儲存的值根據金鑰
}
{
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:28.1
class:6
kkk:kkk  
}
{
 Long delete(H key, Object... hashKeys);//刪除給定的雜湊hashKeys   
}
{
  Boolean hasKey(H key, Object hashKey);//確定雜湊hashKey是否存在  
}
{
HV get(H key, Object hashKey);//從鍵中的雜湊獲取給定hashKey的值    
}
{
 Long increment(H key, HK hashKey, long delta);
 //通過給定的delta增加雜湊hashKey的值(整型)   
}
{
 Double increment(H key, HK hashKey, double delta);
 //通過給定的delta增加雜湊hashKey的值(浮點數)   
}
{
 Set<HK> keys(H key);
 // 獲取key所對應的散列表的key   
}

Redis的Set資料結構

{
Long remove(K key, Object... values);
// 移除集合中一個或多個成員  
}
{
V pop(K key);
// 移除並返回集合中的一個隨機元素 
}
{
 Set<V> members(K key);
// 返回集合中的所有成員   
}
{
  Cursor<V> scan(K key, ScanOptions options);
   // 遍歷set  
}

Redis的ZSet資料結構

{
Long add(K key, Set<TypedTuple<V>> tuples);
 // 新增一個有序集合  
}
{
Boolean add(K key, V value, double score);
 // 新增一個有序集合,存在的話為false,不存在的話為true  
}
{
Long remove(K key, Object... values);
 // 從有序集合中移除一個或者多個元素  
}
{
Set<TypedTuple<V>> rangeWithScores(K key, long start, long end);
 // 通過索引區間返回有序集合成指定區間內的成員物件,其中有序整合員按分數值遞增(從小到大)順序排列    
}
{
Set<ZSetOperations.TypedTuple<Object>> tuples1=redisTemplate.opsForZSet().rangeWithScores("zset1",0,-1);
Iterator<ZSetOperations.TypedTuple<Object>> iterator= tuples1.iterator();
while (iterator.hasNext()){
   ZSetOperations.TypedTuple<Object> typedTuple= iterator.next();  System.out.println("value:"+typedTuple.getValue()+";score:"+typedTuple.getScore());
        } 
}