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的有效時長