Redis數據結構型數據庫及其常用操作

NoSQL適用場景

•      對數據高併發讀寫

•      對海量數據的高效率存儲和訪問

•      對數據的高可拓展性和高可用性

 

Redis的介紹

Redis is an open source,advanced key-value store. It is often referredto as a data structure server since keys can contains strings,hashes,lists,setsand sorted sets.

 

上述數據類型都支持push/pop、add/remove

數據都是緩存在內存中,它也可以週期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件。 Bin_log   快照

 

Redis支持各種不同方式的排序。

 

Redis適用場合

•      取最新N個 數據的操作

•      排行榜應用,取TOP N操作

•      需要精確設定過期時間的應用

•      計數器應用

•      Uniq操作,獲取某段時間所有數據排重值

•      實時系統,反垃圾系統

•      Pub/Sub構建實時消息系統

•      構建隊列系統

•      緩存

 

Redis配置

daemonize  如果需要在後臺運行,把該項改爲yes

pidfile  配置多個pid的地址 默認在/var/run/redis.pid

bind  綁定ip,設置後只接受來自該ip的請求

port  監聽端口,默認爲6379

timeout  設置客戶端連接時的超時時間,單位爲秒

loglevel  分爲4級,debug、varbose、notice、warning

logfile  配置log文件地址

database  設置數據庫個數,默認使用的數據庫爲0

save  設置redis進行數據庫鏡像的頻率

 

rdbcompression 在進行鏡像備份時,是否進行壓縮

Dbfilename  鏡像備份文件的文件名

Dir  數據庫鏡像備份的文件放置路徑

Slaveof  設置數據庫爲其他數據庫的從數據庫

Masterauth  主數據庫連接需要的密碼驗證

Requirepass 設置登錄時需要使用的密碼

Maxclients 限制同時連接的客戶數量

Maxmemory 設置redis能夠使用的最大內存

Appendonly  開啓append only模式

 

Appendfsync 設置對appendonly.aof文件同步的頻率

vm-enabled 是否開啓虛擬內存支持

vm-swap-file 設置虛擬內存的交換文件路徑

vm-max-memory  設置redis使用的最大物理內存大小

vm-page-size 設置虛擬內存的頁大小

vm-pages 設置交換文件的總的page數量

vm-max-threads  設置VMIO同時使用的線程數量

Glueoutputbuf  把小的輸出緩存存放在一起

hash-max-zipmap-entries 設置hash的臨界值

Activerehashing  重新hash

 

 

 

Strings類型

Set name Jason

Get name

 

setnx  爲空返回1,並設置  不爲空返回0

setex  插入並設置時間

setrange name 6 gmail.com  6代表下標

mset 一次設置多個key的值

getrange name 0 5,返回0-5內的字符

incr key6  做++操作

incrby  加指定數字 incrby key 5

decr

decrby

getset

mget

append

strlen  取指定key的value值長度

 

 

 

hashes類型

Redis hash是一個string類型的field和value的映射表。它的添加、刪除操作都是0(1)。Hash特別適用於存儲對象。相較於將對象的每個字段存成單個string類型。將一個對象存儲在hash類型中會佔用更少的內存,並且可以更方便的存取整個對象

 

hset 設置hash field爲指定值,如果key不存在,則先創建。

hsetnx

hmset

hincrby

hlen

hdel

hkeys

hvals 返回所有value

hgetall

 

 

list類型

List是一個鏈表結構,主要功能是push、pop、獲取一個範圍的所有值等等,操作中key理解爲鏈表的名字。Redis的list類型其實就是一個每個子元素都是string類型的雙向鏈表。我們可以通過push、pop操作從鏈表的頭部或者尾部添加刪除元素,這樣list即可以作爲棧,又可以作爲隊列。

 

Lpush list頭部添加數據

linsert

lset

lrange

 

ltrim list8 1 2 保留範圍內的數據

 

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

rpoplpush 從第一個list的尾部移除元素並添加到第二個list的頭部

lindex

llen

 

sets類型

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

 

sadd

smembers

srem 刪除名稱爲key的set中的元素  srem myset one 成功返回1

 

spop隨機返回並刪除一個元素

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

sdiffstore 返回的差集存到另一個key  sdiffstore newSet myset1myset2

sinter 取交集

sinterstore

sunion 返回所有給定key的並集

sunionstore

smove 從第一個key對應的set中移除member並添加到第二個對應的set中

             smove myset2 myset7 three

  scard  查看集合元素數量

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

srandmember  隨機返回名稱爲key的set的一個元素,但不刪除元素

 

sorted sets

zadd       zadd myzset 1 noe

zrange

zrem

zincrby

zrank(按score從小到排序)

zrangebyscore myset2 3 withscore

zremrangebyrank

 

 

Redis常用命令

鍵值相關命令

Keys *

exists

del 

expire

ttl 獲取key的有效時長

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章