redis學習筆記

2021-09-02 12:02:41 字數 3822 閱讀 3259

1)nosql資料庫主要由以下特點:非關係型的、分布式的、開源的、水平可擴充套件的。

1,處理超大量的資料

2,執行在便宜的pc伺服器集群上,

3,擊碎了效能瓶頸。

1)對資料高併發讀寫。

2)對海量資料的高效率儲存和訪問。

3)對資料的高擴充套件性和高可用性。

redis支援的型別:

sring 型別

set name lijie

get name lijie

set name lichao

get name lichao

覆蓋了setnx設定key對應的值為string型別的value,如果存在不更新,不存在更新

setnx name lijie

返回0。

setex設定key對應的值為string型別的value,並制定有效期

setex haircolor 10 red

get haircolor

redget haricolor

nilsetrange 設定指定key的value值的子字串

setrange name 6 gmail.com

返回字串的長度。

mset 一次設定多個key的值,成功返回ok表示所有的值都設定了,失敗返回0表示沒有任何值

被設定。

mset key1 lijie key2 braosd key3 sadf

get key1

lijie

get key4

nilmsetnx 一次設定多個key的值,成功返回ok表示所有的值都設定了,失敗返回0表示沒有任何值

被設定,但是不會覆蓋已存在的key。

getset 設定key的值,並返回key的舊值。

getrange 獲取key的value值的子字串。

getrange name 0 5

mget 一次獲取多個key的值,如果對應的key不存在則返回nil

mget key1 key2 key3

incr 對key的值做加加操作,並返回新的值

incrby 同incr類似,加指定值,key不存在時候會設定key,並認為原來的value是0。

decr

decrby

strlen 取指定key的value的長度

hash型別

它是乙個string型別的field和value的對映表。它的新增、刪除操作都是0(1)。hash特別適合用於儲存物件。相較於將物件的每個欄位存成單個string型別,將乙個物件儲存在hash型別

中會占用更少的記憶體,並且可以更方便的訪問整個物件。

hset設定hash field為指定值,如果key不存在,則先建立。

hset myhash field 1 hello

hset user:001 name lijie

hget user:001 name

hincrby

hincrby user:003 age 5

hexists

hlen 返回指定field的數量。

hdel 刪除指定hash的field。

hkeys 返回hash的所有field

hvals 返回hash的所有value

hgetall 返回所有的key,value

list型別

它是乙個鍊錶結構,主要功能是push,pop、獲取乙個範圍的所有值等等,操作key理解為鍊錶

的名字。redis的list型別其實就是乙個每個子元素都是string型別的雙向鍊錶。我們可以通過

push,pop操作從鍊錶的頭部或者尾部新增刪除元素,這樣list既可以作為棧,又可以作為佇列

lpush

在key對應list的頭部新增字串元素

lpush mylist "world"

lpush mylist "hello"

lrange mylist 0 -1

rpush 在key對應list的尾部新增字串元素

linsert 在key對應list的特定位置前或後新增字串。

linert list3 before one "three"

lset 設定list指定位置下標的元素值

lrem 從key對應list中刪除n個和value相同的元素。(n<0從尾部刪除,n=0全部刪除)

lrem mylist5 1 "hello" 從mylist5中刪除乙個與hello相同的元素

ltrim 保留指定key的值範圍內的資料

lpop 從list的頭部刪除元素,並返回刪除元素。

rpop 從list的尾部刪除元素,並返回刪除元素。

rpoplpush 從第乙個list的尾部移除元素並新增到第二個list的頭部。

rpoplpush mylist5 mylist6 從mylist5的尾部移除元素新增到mylist6的頭部。

lindex 返回名稱為key的list中index位置的元素

set型別

set是集合,它是string型別的無序集合。set是通過hash table實現的,新增、刪除和查詢的複雜度都是0(1)。對集合我們可以取並集、交集、差集。通過這些操作我們可以實現sns的好友推薦和blog的tag功能。

sadd 向名稱為key的set中新增元素。

sadd myset "hello"

sadd myset "world"

smembers myset 檢視集合中的所有成員

srem 刪除名稱為key的set中的元素。

spop隨機返回並刪除名稱為key的set中的乙個元素。

sdiff 返回所有給定key與第乙個key的差集。

sdiff myset2 myset3 返回myset2有myset3沒有的元素

sdiffstore 返回所有給定key與第乙個key的差集,並將結果存為另乙個key

sdiffstore myset4 myset2 myset3 意思是將myset2與myset3的差集存在myset4中。

sinter 返回所有給定key的交集。

sinterstore 交集儲存在另乙個集合裡

sunion 返回所有給定key的並集。

sunionstore 返回給定key的並集儲存在另乙個集合裡

smove 從第乙個key對應的set中移除member並新增到第二個對應的set中。

smove myset2 myset7 three 將myset2中的three元素移動到myset7中。

sismember 測試member是否是名稱為key的set的元素。

sismember myset2 two 判斷two元素是否是myset2集合的元素。

srandmember 返回名稱為key的set的乙個元素,但不刪除元素。

sorted set型別

它在set的基礎上增加了乙個順序屬性,這一屬性在新增修改元素的時候可以指定,每次指定後

,zset會自動重新按新的值調整順序。可以理解為有兩列mysql表,一列存value,一列存順序

。操作中key裂解為zset的名字。

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

順序。zadd myzset 1 "one"

zrange myzset 0 -1 withscores

zrem 刪除名稱為key的zset中的元素member。

zrem myzset two

zincrby 如果在名稱為key的zset中已經存在元素member,則該元素的score增加increment

,否則向該集合中新增該元素,其score的值為increment。

zrank 返回名稱為key的zset中member元素的排名,即下標。

redis 學習筆記

本文寫作源於最近產品中部分功能用到了redis redis在功能上是乙個與memecache類似的軟體,但它比memecache提供了更強大的功能。redis本質上是乙個key value型別的記憶體資料庫。其value可以是string,list,set,sorted set,hash。很多地方都...

redis學習筆記

1.redis的無序集合 sadd命令產生乙個無序集合 smembers檢視集合元素 sismember用於檢視集合是否存在,匹配項包括集合名和元素個數。匹配成功返回1,匹配失敗返回0 2.有序集合 zadd 生成乙個有序集合。zrange檢視正序的集合,zrevrange檢視反序的集合 set和g...

redis學習筆記

redis啟動伺服器和客戶端的相關命令 string型別 乙個key對應乙個value set key value 比如 set name geyule setnx 如果key存在返回0,nx表示not exist setex 指定有效期 setrange 替換 setrange key n val...