1. 程式人生 > >NoSQL之Redis對zset(有序集合)資料型別的操作

NoSQL之Redis對zset(有序集合)資料型別的操作

一、簡介

Sorted set(zset)是set的升級版本,它在set的基礎上增加了一個順序屬性,這一屬性在新增修改元素的時候可以指定,每次指定後,zset會自動重新按新得值調整順序。可以理解為有兩列的mysql表,一列存value,一列存順序。操作中key理解為zset的名字。

二、有序集合的操作方法

下面score是按順序操作而rank是按索引操作

1.zadd key score member:向名稱為key的zset中新增元素member,score用於排序。如果該元素存在,則更新其順序。

127.0.0.1:6379> zadd zsetkey 1 'one'
(integer) 1
127.0.0.1:6379> zadd zsetkey 2 'two'
(integer) 1
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
127.0.0.1:6379> zadd zsetkey 3 'two'
(integer) 0
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "3"

zadd zsetkey 3 'two'這條語句代表更新失敗,但是順序號已經改變

這裡需要注意score必須是整數,不能是字元型。

2.zrange zsetkey start end withscores:獲取zsetkey的有序集合的數字,從start取到end,並且附上順序號。若不加withscores那麼不附加順序號

127.0.0.1:6379> zrange zsetkey 0 -1
1) "one"
2) "two"

3.zrem zsetkey member:刪除zsetkey中的member元素。返回1代表刪除成功

127.0.0.1:6379> zrem zsetkey two
(integer) 1
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "one"
2) "1"

4.zincrby zsetkey incrment member:如果在名稱為zsetkey的zset中已經存在元素member,那麼該元素的score增加Increment否則向該集合中新增該元素,其score的值為Increment。若成功返回的是member增長之後的序列號。

127.0.0.1:6379> zadd zsetkey 3 'three'
(integer) 1
127.0.0.1:6379> zincrby zsetkey 1 one
"2"
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "one"
2) "2"
3) "two"
4) "2"
5) "three"
6) "3"
127.0.0.1:6379> zincrby zsetkey 3 one
"5"
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "one"
6) "5"

從上面的例子可以看出,序列號可以相同,類似二維陣列。

5.zrank zsetkey member:返回名稱為zsetkey的zset中member元素的索引值(按score從小到大排序)即下標。返回的時索引值

127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "one"
6) "5"
127.0.0.1:6379> zrank zsetkey three
(integer) 1
127.0.0.1:6379> zrank zsetkey one
(integer) 2

three和one的索引分別是1和2.

6.zrevrank zsetkey member:返回名稱為zsetkey的zset中的member元素的索引值(按score從大到小排序)。

127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "one"
6) "5"
127.0.0.1:6379> zrevrank zsetkey one
(integer) 0
127.0.0.1:6379> zrevrank zsetkey three
(integer) 1

7.zrevrange zsetkey start end:按從大到小的順序,從zsetkey中從start取到end。

127.0.0.1:6379> zrevrange zsetkey 0 -1 withscores
1) "one"
2) "5"
3) "three"
4) "3"
5) "two"
6) "2"

8.zrangebyscore zsetkey start end:返回集合中給定score區間內的值

127.0.0.1:6379> zrange zsetkey 0 -1 withscores
 1) "two"
 2) "2"
 3) "three"
 4) "3"
 5) "four"
 6) "4"
 7) "five"
 8) "5"
 9) "one"
10) "5"

127.0.0.1:6379> zrangebyscore zsetkey 3 5 withscores
1) "three"
2) "3"
3) "four"
4) "4"
5) "five"
6) "5"
7) "one"
8) "5"

這個和zrange最大的區別就是範圍值是儲存的key值而不是預設的整形索引值。

9.zcount zsetkey start end:返回給定範圍內的members數量

127.0.0.1:6379> zcount zsetkey 3 5
(integer) 4


4個,沒有問題

10.zcard zsetkey:返回zsetkey中所有元素的個數

127.0.0.1:6379> zcard zsetkey
(integer) 5

11.zremrangebyrank zsetkey start end :刪除集合內給定區間內的元素

127.0.0.1:6379> zrange zsetkey 0 -1 withscores
 1) "two"
 2) "2"
 3) "three"
 4) "3"
 5) "four"
 6) "4"
 7) "five"
 8) "5"
 9) "one"
10) "5"
127.0.0.1:6379> zremrangebyrank zsetkey 1 3
(integer) 3
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "two"
2) "2"
3) "one"
4) "5"

上面的操作刪除了zsetkey中索引從1到3的,也就是three four five。

12.zremrangebyscore zsetkey start end:按順序刪除zsetkey中給定範圍內的元素(按順序而不是按所以刪除)

127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
127.0.0.1:6379> zremrangebyscore zsetkey 2 3
(integer) 2
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "one"
2) "1"
3) "four"
4) "4"

相關推薦

NoSQLRediszset(有序集合)資料型別操作

一、簡介 Sorted set(zset)是set的升級版本,它在set的基礎上增加了一個順序屬性,這一屬性在新增修改元素的時候可以指定,每次指定後,zset會自動重新按新得值調整順序。可以理解為有兩列的mysql表,一列存value,一列存順序。操作中key理解為zset

Redis】(sorted set) 有序集合資料型別的使用,應用和問題

Redis 有序集合(sorted set)資料型別的使用,應用和問題 Overview Redis 有序集合(sorted set)資料型別的使用,應用和問題 redis-cli 操作資料庫 - n/a Python 操作 Redis

lunix下的redis數據庫操作——zset有序集合

之間 rank core 有序 nbsp rem color add 個數 創建:(有序集合存在一個權重的概念) zadd zset 1 a 2 b 3 c 4 d 5 e 6 f 7 g # 輸出: # 1) "a" # 2) "b" # 3) "c" # 4) "d

Redis-List命令和Zset有序集合命令的併發原子性原理

一、Redis-List命令和Zset有序集合命令的併發原子性原理 這個併發原則處理的過程是要基於當前的key在客戶端發生了併發產生了阻塞才會執行, 否者會返回NULL不做處理,多個命令併發操作這個KEY,就可能產生阻塞 db->blocking_keys 字典維護的雜湊表,存放客

NoSQLredis(資料型別上)

1.String型別 ①賦值:192.168.191.130:6379> set name zs②取值192.168.191.130:6379> get name③取值 並賦值192.168.191.130:6379> GETSET name ll④設定多個值

NoSQLredis(資料型別下)

1.set型別 (1)命令 ①增加元素      語法:SADD key member [member ...]②刪除元素       語法:SREM key memb

NoSQLRedis資料型別

Redis     Remote  Dictionary Server(遠端字典伺服器)-www.redis.cn中文網站 高效能的分散式記憶體資料庫,支援資料持久化(可以把記憶體儲存到硬碟),list,hash,set,zset等資料型別和ma

redis 系列14 有序集合

負數 img core get 有序 htm ring .html nan 原文:redis 系列14 有序集合對象一. 有序集合概述   Redis 有序集合對象和集合對象一樣也是string類型元素的集合,且不允許重復的成員。不同的是每個元素都會關聯一個double類

Nosql Redis數據庫

redia1、redis基礎入門2、redis應用進階 一、概念redis是一個開源的鍵-值,即是緩存又是存儲,支持持久化,借助sentinel實現一定意義的高可用,數據結構服務器:string,list,hash,set ,sorted set,bitmap,hyperloglognosql 四種流派:ke

Redis有序集合Sorted set操作

並集 有序集合 排名 區間 sca 素數 offset add spa Sorted set全部命令如下: zadd key score1 member1 score2 member2 ... # 將一個或多個member元

NoSQLRedis入門筆記

 Redis  1.Redis介紹 1.1 NoSQL:一類新出現的資料庫(not only sql),它的特點 不支援sql語法 儲存結構跟傳統關係型資料庫中的那種關係表完全不同,nosql中儲存的資料都是key value形式 NoSQL的世界中沒有一種通用的語言,

Redis鍵值的value的資料型別

1、Redis支援五種資料型別:string(字串),hash(雜湊),list(列表),set(集合)及zset(sorted set:有序集合)。 String型別的資料(作為快取使用),列舉少量用法: 1.插入和讀取一條string型別的資料

NoSqlRedis系列(一)

為什麼要學習Redis Redis是什麼? Redis is an open source (BSD licensed), in-memory data structure store, used

NoSQLredis(Jedis連線 API)

工程搭建:     (1)介紹:redis不僅使用命令可以操作,現在基本上主流的語言都有客戶端支援,比如:java、C、C#、C++、php、Node.js、Go等。       

NoSQLredis(介紹+叢集搭建)

一、NoSQL的介紹 什麼是NoSQLNoSQL,叫非關係型資料庫,它的全名Not only sql。它不能替代關係型資料庫,只能作為關係型資料庫的一個良好補充。 NoSQL的分類: 鍵值對(K-V)儲存資料庫 相關產品: Tokyo Cabinet/Tyrant

NoSQLredis(常用命令)

keys            (1)介紹:返回滿足條件的所有key,支援正則          &

NoSQLredis(持久化策略)

1.rdb方式     (1)介紹:redis預設的是通過快照來將資料持久化到磁碟中。     (2)持久化的條件:          &

NoSQLredis(分散式叢集)

1.叢集架構: 解釋: 所有的redis節點彼此互聯(PING-PONG機制),內部使用二進位制協議優化傳輸速度和頻寬。 節點的fail是通過叢集中超過半數的節點檢測失效時才生效. 客戶端與redis節點直連,不需要中間proxy層.客戶端不需要連線叢集所有節點,連線叢集中

NoSQLredis(主從複製)

1.redis主從複製的介紹:     持久化保證了即使redis伺服器重啟也不會丟失資料,因為redis伺服器重啟後將硬碟上持久化的資料恢復到記憶體中, 但是當redis伺服器的硬碟損壞了可能會導致資料丟失,如果通過redis的主從複製機制就可以避免這種單點故障。

NoSQL資料庫Redis支援的五種資料結構及使用場景

  眾所周知,Redis相比同樣作為快取伺服器的memcached而言,除了有持久化的功能外,還比著memcached有更多豐富的資料結構,今天就來講一下Redis支援的五種資料結構:String(字串)、Hash(雜湊)、List(列表)、Set(集合)、Sorted Set(有序集合)