[Redis]Redis的五種資料類型與索引值/伺服器相關命令

來源:互聯網
上載者:User

標籤:

--------------------------------------------------------------------------------------

String(字串):最簡單的資料類型。

  set age 18

  ( set age 18 ex 5 )   # 設定到期時間5秒

  setex age 5 18      # 效果同上, 使用 ttl age 可以查看剩餘有效時間

  psetex age 5000 18    # 同上,只是以毫秒為單位設定key的到期時間

  ( set age 18 nx )     # 如果age鍵不存在才設定

  setnx age 18      # 效果同上

  get age

    

  ( set email chenw(a)59store.com )

  setrange email 9 live.com   # 從第6個位置開始用value值替換鍵的值,得到的結果是 [email protected],後面多出的不會替換

  

  mset key1 a key2 b       # 一次性設定一個或多個值,使用get擷取

  msetnx key1 c          # 如果鍵不存在,設定一個或多個值

 

  getset email farwish(a)live.com # 鍵設為指定值,並返回舊值

  getrange email 3 6     # 返回key從3到6的子字串,得到wish

  mget key1 key2       # 返回所有給出的key的值

 

  incr age         # 對鍵的值自增1,返回新值;鍵不存在時則設定

  incrby age 3        # 對鍵的值自增指定值(可以是負值),返回新值;鍵不存在時則設定

  incrbyfloat age 0.5    # 為key的值加上浮點數增量值

  decr age          # 自減1

  decrby age 3       # 自減指定值  

 

  append email .cn     # 將value追加到原索引值末尾

  strlen email       # 返回鍵儲存的字串長度

 

  bitcount email       # 計算給定字串中,被設定為 1 的位元位的數量

  bitop operation deskkey key1 key2 # 對一個或多個儲存二進位位的字串 key 進行位元操作,並將結果儲存到 destkey 上

  setbit key offset value  # 對 key 所儲存的字串值,設定或清除指定位移量上的位(bit)

  getbit key offset     # 對 key 所儲存的字串值,擷取指定位移量上的位(bit)

 

Hash(雜湊表):適用於儲存物件,相較於儲存單個string,佔用更少的記憶體。

  hset user:1 name farwish  # 將hash表中name值設為farwish,已存在時覆蓋

  hget user:1 name      # 取出hash表中name值

  hsetnx user:1 name      # 如果不存在則設定,存在則返回0

  

  hmset user:2 name weichen age 20 # 同時設定多個值到hash表

  hmget user:2 name age      # 批量擷取多個欄位的值

  

  hincrby user:2 age 5      # 為hash表中欄位age增加5

  hincrbyfloat user:2 age 0.5    # 允為hash表中欄位增加浮點值

  hexists user:2 name       # 判斷hash表中某個欄位是否存在

  hlen user:2             # 返回hash表中欄位的數量

  

  hdel user:2 age          # 刪除hash中某個欄位

  hkeys user:2          # 返回hash表中所有的欄位

  hvals user:2           # 返回hash表中所有的值

  hgetall user:1           # 返回hash表中,所有的欄位和值

  

  hscan               # 迭代雜湊鍵中的索引值對,用法同scan

 

List(列表):鏈表結構,每個子項目都是string類型的雙向鏈表;通過push、pop從鏈表頭部尾部添加刪除元素,既可以作為棧(先進後出),也可以作為隊列(先進先出)。

  lpush mylist a b c     # 在鏈表頭部壓入一個或多個value,返回元素個數,如果key不存在,則建立並執行lpush操作

  lpushx nolist a      # 與lpush的不同之處在於,(1) 只能壓入一個value (2) 當key不存在時,什麼也不做

  lrange mylist 0 -1     # 返回鏈表中指定區間的元素,0表示第一個,-1表示最後一個,-2表示倒數第二個

  rpush mylist A        # 在鏈表尾部壓入一個或多個value;c b a A

  rpushx mylist       # 與rpush的不同之處在於,(1) 只能壓入一個value (2) 當key不存在時,什麼也不做

  linsert mylist before a B # 在a之前插入B到鏈表中;c b B a A

  ( linsert mylist after A B ) # 在A之後插入B到鏈表中;c b B a A B

  lset mylist 0 C      # 將mylist下標為0的值設為C;C b B a A B

  lrem mylist 2 B        # (remove)刪除2個列表中與B相等的元素,如果數量為0表示移除所有B,返回刪除成功的數量;C b a A

  ltrim mylist 1 -1     # 保留列表內指定區間範圍的元素,其餘刪除;b a A

  lpop mylist         # 刪除並返回列表的頭元素;a A

  rpop mylist         # 刪除並返回列表的尾部元素;a

  rpoplpush mylist mylist  # 從尾彈出一個元素並從頭壓入;a

  ( lpush list1 A B C; rpoplpush list1 mylist ) 從list1尾部彈出元素並壓入mylist頭部;A a

  lindex mylist 1      # 返回列表中下標為1的元素,不存在返回nil

  llen mylist         # 返回列表中元素個數;2

 

  blpop key timeoutSeconds # lpop命令的阻塞版本,列表內沒有元素彈出時串連將阻塞,直到等待逾時或發現可彈出元素為止;給定多個key參數時,blpop按給定key參數排列順序一次檢查;相同的key可以被多個用戶端同時阻塞;key為空白返回nil,否則返回彈出元素的key和被彈出的元素

  ( blpop list2 5 )  由於list2不存在,5秒後將逾時;

  ( blpop list2 mylist 2 )  開始在list2處阻塞,直到mylist,彈出A;

  brpop key timeout     # 同blpop

  brpoplpush list1 a 5     # rpoplpush的阻塞版本,列表非空時,表現和rpoplush一樣,列表為空白時,brpoplpush將阻塞串連,直到逾時或有另一用戶端執行lpush或rpush命令為止

 

Set(集合): String類型的無序集合,通過hash table實現,對集合可以取並集、交集、差集。

  sadd sns crazysns.cn farwish.com   # 將一個或多個元素添加到集合sns中,如果元素已經存在,則忽略

  smembers sns             # 返回集合中所有成員

  srem sns crazysns.cn         # 移除集合中一個或多個元素,沒有則忽略,非集合則報錯;返回被成功移除的數量

  ( sadd sns weibo.com, sadd sns qq.com, sadd sns renren.com, sadd sns fb.com )

  spop sns                # 移除並返回集合中的一個隨機元素

  ( sadd sns2 qq.com t.com )

  sdiff sns sns2             # 取差集,返回sns不在sns2中的元素,以第一個key為標準

  sdiffstore sns3 sns sns2        # 與sdiff類似,只是將sns和sns2的差集儲存到sns3,返回成功儲存的數量

  sinter sns sns2             # 取交集(intersect),返回交集元素列表

  sinterstore sns4 sns sns2       # 與sinter類似,只是將sns和sns2的交集儲存到sns4,返回成功儲存的數量

  sunion sns sns2            # 取並集,返回全部成員

  sunionstore sns5 sns sns2        # 與sunion類似,只是將sns和sns2的交集儲存到sns5,返回成功儲存的數量

  smove sns sns2 weibo.com       # 把sns中的元素weibo.com移動到sns2中,成功返回1

  scard sns                # 返回集合的元素個數

  sismember sns qq.com         # 判斷qq.com是否為sns的元素,是返回1,不是返回0

  srandmember sns           # 隨機返回一個元素

  scan 0                  # 迭代當前資料庫中的資料庫鍵,返回一部分集合,如果全部列出,則返回0和集合列表;如果只列出一部分,則返回下一個遊標的值和當前的集合列表;相當於分頁或linux的more命令,一次只查看部分,scan以遊標記錄位置;適宜資料量大時,代替keys或smembers,不過會存在資料已顯示或更新,只能保證當前顯示的資料準確。

  

 

SortedSet(有序集合):Set的升級版,在set的基礎上增加順序屬性,類似加了一列sort欄位

  zadd company 1 apple 2 google 3 ms   # 將一個或多個元素及順序值加入集合,若某個元素存在則只更新順序值

  zrange company 0 -1 withscores      # 顯示集合中第一個到最後一個的元素和順序號,不加withscores則不顯示順序號

  zrem company apple ms          # 刪除有序集合中一個或多個元素,成功返回被刪除的數量,不包括被忽略成員

  zincrby company 3 google         # 為有序集合成員順序號加上增量值,返回新順序值

  ( zadd company 3 twitter )

  zrank company google          # 按順序值從小到大排列,返回有序集合中指定元素的索引;1

  ( zadd company ebay )

  ( zrank company google )         # 2

  zrevrank company google         # 按順序值從大到小排列,返回有序集合中指定元素的索引;0

  zrevrange company 0 -1 withscores    # zrange的降序排列

  

  zrangebyscore company 3 4       # 返回從小到大指定順序區間內的元素

  zrevrangebyscore company 4 3      # 返回從大到小指定順序區間內的元素

  zcount company 3 4           # 返回指定順序區間內的元素數量

  zcard company               # 返回所有有序集合的個數

  

  zremrangebyrank company 2 2      # 刪除有序集合中索引區間內的成員

  zremrangebyscore company 4 5     # 刪除有序集合中順序區間內的成員

  

  zscore company google          # 取有序集合成員的順序號

  ( zadd cp gg )

  zunionstore all 2 company cp           # 將2個有序集合company和cp的並集,儲存到all集合中

  ( zunionstore all 2 company cp weight 1 3 ) # weight用於給對應的集合加上因子,即cp有序集合中的元素順序號都乘以3    

 

  ( zadd min 10 a; zadd min 20 b; zadd min 30 c; )

  ( zadd max 40 a; zadd max 50 b; zadd max 60 c; )

  ( zadd mid 70 a; zadd mid 80 b; zadd mid 90 c; )

  zinterstore sum 2 min max         # 計算給定有序集合的交集,2為集合的數量,交集儲存到sum

  

  ( zinterstore sum2 3 min max mid )    # 如果數量不正確也會報錯

  

  

  zscan                    # 用法同scan

  

 

  ( zadd myzset 0 b 0 a 0 d 0 c 0 e 0 f )

  zrangebylex myset - +            #  對有序集合在指定的範圍內的元素排序,如果score值相同,則根據成員的字典序排序;- 表示負無窮,+ 表示正無窮,( 表示開區間,[ 表示閉區間

  

  

  

  zlexcount myzset - +           # 返回有序集合介於-到+之間的成員的數量;6

  zremrangebylex myzset [a (c       # 移除有續集合介於[a 到(c 之間的成員,返回成功移除的數量;2

 

------------------------------------- farwish.com --------------------------------------- 

 

鍵的相關命令

  keys *       # 返回符合匹配模式的所有鍵

  (keys sns*)    

  exists mylist    # 檢查某個key是否存在,存在返回1,不存在返回0

  del mylist sns    # 刪除一個或多個key,成功返回刪除的數量,失敗返回0

  expire sns 5    # 設定一個key的到期時間(秒)

  pexpire sns 5000  # 功能同上(以毫秒計算到期時間)

  pexpireat sns 1231312331 # 以毫秒為單位設定key到期的unix時間戳記

  persist sns      # 移除給定key的到期時間,即取消到期設定;此時ttl sns返回-1表示已成功移除到期時間 

  ttl sns       # 查看一個key的剩餘存留時間(秒),-1表示到期

  pttl sns       # 以毫秒為單位返回key的剩餘存留時間

  ( select 0 )      # 選擇0資料庫,預設有0-15共16個資料庫

  move sns 1     # 將sns移動到資料庫1;

  radomkey      # 返回一個隨機的key

  rename min miin   # 重新命名一個key;成功返回1

  renamenx min max  # 僅當新的key名不存在時,才執行重新命名;已存在返回0

  type myzset    # 返回一個key儲存的值的類型;zset

  scan        # 迭代當前資料庫中的資料庫鍵,返回一部分集合; 詳細見上面String類型部分

 

  dump myzset                # 序列化給定的key,返回被序列化的值

  restore myzset-again 0 "\xoc\x1"      # 還原序列化給定的序列化值為redis的鍵,  restore key ttl serialized_value (ttl 為毫秒,0則不設定到期時間)

  migrate 192.168.1.11 6379 sns 0 1000  # 毫秒逾時時間內將key原子性的從當前執行個體傳送到目標執行個體的指定資料庫上,成功,key出現在目標執行個體上,當前執行個體的key被刪除;只會出現三種結果:遷移成功,遷移失敗,等待逾時;migrate host port key db timeout

  object

  sort      # 返回或儲存所給的 列表、集合、有序集合的key中經過排序的元素;sort預設排序對象是數字,對字串排序需要顯示添加alpah修飾符

  ( sort [get pattern] [limit] [get pattern] [asc|desc] [store destination] )

  ( lpush number 1 4 10 3 )

  ( sort number )        # 1 3 4 10

  ( sort number desc )      # 10 4 3 1

  ( lpush site www.baidu.com www.z.cn www.farwish.com )

 

  # 使用alpha修飾符

  ( sort site alpha )       # www.baidu.com www.farwish.com www.z.cn

 

  # 使用limit修飾符

  ( sort number limit 0 2 )    # 1 3

  ( sort number limit 3 4 )    # 10

 

  # 使用外部key進行排序;

  ( lpush uid 1 )

  ( set user_name_1 user1 )

  ( set user_level_1 999 )

  ( lpush uid 2 )

  ( set user_name_2 user2 )

  ( set user_level_2 777 )

  ( lpush uid 3 )

  ( set user_name_3 user3 )

  ( set user_level_3 888 )

  ( lpush uid 4 )

  ( set user_name_4 user4 )

  ( set user_level_4 889 )

  ( sort uid )                    # 1 2 3 4

 

  # 通過by選項,讓uid按其他鍵的元素來排序

  ( sort uid by user_level_* )             # 2 3 4 1  (按level值排序了777 888 889 999)

 

  # 使用get選項,可以根據排序的結果取出相應的索引值

  ( sort uid get user_name_* )            # user1 user2 user3 user4

 

  # 組合使用by和get,讓排序結果以更直觀的方式顯示

  ( sort uid by user_level_* get user_name_* )   # user2 user3 user4 user1 

 

  # 同時使用多個get選項,擷取多個外部鍵的值,井號可以擷取被排序鍵的值

  ( sort uid get user_level_* get user_name_* )   # 999 user1 777 user2 888 user3 889 user4

  ( sort uid get # get user_level_* get user_name_* ) # 1 999 user1 2 777 user2 3 888 user3 4 889 user4

 

  # 擷取外部鍵,但不排序;通過將一個不存在的鍵作為參數傳給by選項,可以讓sort跳過排序操作

  ( sort uid by user_nick_* get # get user_level_* get user_name_* )

 

  # 將雜湊表作為by和get的參數

  ( hmset user_info_1 name u1 age 18 level 9 )

  ( hmset user_info_2 name u2 age 19 level 7 )

  ( hmset user_info_3 name u3 age 20 level 8 )

  ( hmset user_info_4 name u4 age 21 level 6 )

  ( sort uid by user_info_*->level )               # 4 2 3 1

  ( sort uid by user_info_*->level get user_info_*->name )  # u4 u2 u3 u1

 

  # 儲存排序結果, (可以對排序結果設定expire作為緩衝,這樣可以避免頻繁調用sort,同時避免多個用戶端進行緩衝重建,考慮使用setnx )

  ( sort number store stored_numbers )

  ( lrange stored_numbers 0 -1 )                # 1 3 4 10

  

伺服器相關命令

  ping         # 檢測redis串連是否有效,正常返回pong

  echo ‘message‘  # 列印特定資訊,測試時使用

  auth 123456    # 進入用戶端後,輸入密碼使用

  select 0      # 選擇指定索引的資料庫,索引從0開始

  quit        # 退出用戶端串連

  dbsize        # 返回當前資料庫所有key的數量

  info        # 返回redis伺服器的各種資訊和統計資料

  config get *    # 返回運行中redis的配置參數

  ( config get timeout )

  flushdb       # 清空當前資料庫所有key

  flushall       # 清空所有資料庫所有key

  

Link: http://www.cnblogs.com/farwish/p/4712377.html

@黑眼詩人 <www.farwish.com>

[Redis]Redis的五種資料類型與索引值/伺服器相關命令

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.