Redis常見資料結構的操作
阿新 • • 發佈:2019-01-06
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());
}
}