標籤: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類型