兄弟連學python 課堂筆記 ---- Redis類型

來源:互聯網
上載者:User

標籤:bsp   成員   sorted   field   執行   替換   srand   關聯   插入   

Redis通常被稱為資料結構伺服器,因為值(value)可以是 字串(String), 雜湊(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型。

String(子串類型)

 set 命令:設定一個鍵和值,鍵存在則只覆蓋,返回ok
 > set 鍵  值    例如: >set name zhangsan
 get 命令:擷取一個鍵的值,傳回值
 > get 鍵        例如:>get name
 setnx命令:設定一個不存在的鍵和值(防止覆蓋),
 > setnx 鍵 值      若鍵已存在則返回0表示失敗
 setex命令:設定一個指定有效期間的鍵和值(單位秒)
 > setex 鍵 [有效時間] 值  例如: >setex color 10 red
  不寫有效時間則表示永久有效,等價於set
 setrange命令:替換子字串 (替換長度由子子串長度決定)
 > setrange 鍵 位置 子字串
 > setrange name 4 aa  將name鍵對應值的第4個位置開始替換
 mset命令:大量設定鍵和值,成功則返回ok
 > mset 鍵1 值1 鍵2 值2 鍵3 值3 ....

 

 msetnx命令:大量設定不存在的鍵和值,成功則返回ok

 > msetnx 鍵1 值1 鍵2 值2 鍵3 值3 ....
 getset命令:擷取原值,並設定新值
 getrange命令:擷取指定範圍的值
 >getrange 鍵 0 4     //擷取指定0到4位置上的值
 mget命令: 批量擷取值
 >mget 鍵1 鍵2 鍵3....
 incr命令: 指定鍵的值做加加操作,返回加後的結果。
 >incr  鍵        例如: >incr kid
 incrby命令: 設定某個鍵加上指定值
 > incrby 鍵 m    //其中m可以是正整數或負整數
 decr命令: 指定鍵的值做減減操作,返回減後的結果。
 > decr 鍵        例如: >decr kid
 decrby命令: 設定某個鍵減上指定值
 > decrby 鍵 m    //其中m可以是正整數或負整數
 append命令:給指定key的字串追加value,返回新字串值的長度
 >append 鍵 追加字串
 strlen求長度 >strlen 鍵名   //返回對應的值。

Hash類型
Redis hash 是一個string類型的field和value的映射表,hash特別適合用於儲存物件。
hset命令:設定一個雜湊表的鍵和值
>hset hash名 鍵  值
如:>hset user:001 name zhangsan
hget命令: 擷取執行雜湊名中的鍵對應值
hsetnx命令:設定一個雜湊表中不存在的鍵和值
>hsetnx hash名 鍵  值  //成功返回1,失敗返回0
如:>hsetnx user:001 name zhangsan
hmset命令:hmset user:001 username zhangsan age 20 sex 1 大量設定
hmget user:001 username age sex:批量擷取值
>hexists user:001 name //是否存在, 若存在返回1
>hlen user:001  //擷取某雜湊user001名中鍵的數量
>hdel user:001 name //刪除雜湊user:001 中name鍵
>hkeys user:002   //返回雜湊名為user:002中的所有鍵。
>hvals user:002   //返回雜湊名為user:002中的所有值。
>hgetall user:002 //返回雜湊名為user:002中的所有鍵和值。

List列表(雙向鏈表結構)
Redis列表是簡單的字串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)
list即可以作為“棧”也可以作為"隊列"。
操作:
>lpush list1 "world"  //在list1頭部壓入一個字串
>lpush list1 "hello"  // 在list1頭部壓入一個字串
>lrange list1 0 -1  //擷取list1中內容
    0:表示開頭  -1表示結尾。
>rpush list2 "world"  //在list2尾部壓入一個字串
>rpush list2 "hello"  // 在list2尾部壓入一個字串
>lrange list2 0 -1  //擷取list2中內容
    0:表示開頭  -1表示結尾。
>linsert list2 before hello there
在key對應list的特定位置前或後添加字串
>lset list2 1 "four"修改指定索引位置上的值
>lrem list2 2 "hello"  //刪除前兩個hello值
>lrem list2 -2 "hello" //刪除後兩個hello值
>lrem list2 0 "hello"  //刪除所有hello值
>ltrim mylist8 1 3    //刪除此範圍外的值
>lpop list2   //從list2的頭部刪除元素,並返回刪除元素
>rpop list2   //從list2的尾部刪除元素,並返回刪除元素
>rpoplpush list1 list2    //將list1的尾部一個元素移出到list2頭部。並返回
>lindex list2 1 //返回list2中索引位置上的元素
>llen list2 //返回list2上長度

Redis 集合(Set)
Redis的Set是string類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現重複的資料。
>sadd myset "hello" //向myset中添加一個元素
 成功返回1,失敗(重複)返回0
>smembers myset //擷取myset中的所有元素(結果是無序的)
>srem myset "one" //從myset中刪除一個one
 成功返回1,失敗(不存在)返回0
>spop myset //隨機返回並刪除myset中的一個元素
>srandmember myset //隨機擷取myset中的一個元素,但是不刪除
> smove myset1 myset2 zhangsan:將myset1中zhangsan移動到myset2中
> scard myset1 返回myset1的個數
> sismember myset zhangsan:判斷張三是否在myset中
>sdiff myset1 myset2 //返回兩個集合的差集
以myset1為標準,擷取myset2中不存在的。
>sdiffstore dstset myset1 myset2 ...// 返回所有集合的差集,並儲存到dstset中
>sinter myset1 myset2 myset3... // 返回N個集合中的交集
>sinterstore dstset myset1 myset2 ... // 返回N個集合的交集並儲存到dstset中
> sunion myset1 myset2 ...//返回所有集合的並集
> sunionstore dstset myset1 myset2// 返回所有集合的並集,並儲存到dstset中

Redis 有序集合Sset (sorted set)
Redis 有序集合和集合一樣也是string類型元素的集合,且不允許重複的成員。
不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。
有序集合的成員是唯一的,但分數(score)卻可以重複。
> zadd zset 1 one 向zset中添加one,排序為1排序
> zrem zset one:刪除zset中one
> zincrby zset 2 one:如果one存在,則順序增加2,如果one不存在,那麼就是2
> zrank zset one:返回one在zset中排名(從小到大的排序)
> zrevrank zset one:返回one在zset中排名(從大到小的排序)
> zrange zset 0 -1 withscores:根據score排序(根據score從小到大排序)
> zrevrange zset 0 -1 withscores:根據score排序(根據score從大到小排序)
> zrangebyscore zset 2 3 withscores:返回集合中score在給定區間的元素(包含2和5)
> zcount zset 2 3:返回集合中給定區間的數量
> zcard zset:返回集合中元素的個數
> zscore zset one:返回one元素的score
> zremrangebyrank zset 3 3:刪除集合中排名在給定區間的元素
> zremrangebyscore zset 1 2:將zset中從小到大排序結果的score在1-2之間的刪除


兄弟連學Python 課堂筆記
Python學習交流、資源共用群:563626388 QQ

兄弟連學python 課堂筆記 ---- 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.