redis将散裂中某个值自增_Redis总结
一 初識Redis
1,Redis 使用內(nèi)存存儲的非關(guān)系型數(shù)據(jù)庫,除了各種數(shù)據(jù)類型的專有命令,還支持批量操作(bulk operation)和不完全(partial)的事務(wù)。Memcached 使用內(nèi)存存儲的鍵值對緩存。MongoDB使用硬盤存儲的非關(guān)系性數(shù)據(jù)庫.
2,Redis可以存儲鍵與5種不同數(shù)據(jù)結(jié)構(gòu)類型之間的映射,這5種數(shù)據(jù)類型分別是String(字符串)、List(列表)、set(集合)、hash(散列)、zSet(有序集合)。zSet某種意義上來說是Redis特有的數(shù)據(jù)結(jié)構(gòu)。
3, String 字符串命令
(1)set 設(shè)置存儲在給定鍵中的值
(2)get 獲取存儲在給定鍵中的值
(3)del 刪除存儲在給定鍵中的值
4,List 列表命令
(1)Rpush 將給定的值推入列表的右(lpush 左)端
(2)lrance 獲取列表在給定范圍上的所有值
(3)lindex 獲取列表在給定位置的單個元素
(4)lpop 從列表的左端彈出一個值,并返回這個值
5,set 集合命令
(1)sadd 將給定的元素添加到集合
(2)smembers 返回集合包含的所有元素
(3)sismember 檢擦給定的元素是否已存在于集合中
(4)srem 如果給定的元素存在于集合中,那么移除此元素
6, hash 散列命令(各個不相同的鍵無序排列)
(1)hset 在散列里面關(guān)聯(lián)起給定的鍵值對(注:此命令用于添加鍵值對到散列,命令會返回一個值來表示給定的鍵是否已存在)
(2)hget 獲取指定散列鍵的值
(3)hgetall 獲取散列包含的所有鍵值對
(4)hdel 如果給定的鍵在散列里已存在,那么移除這個鍵
7, zset 有序集合命令
有序集合和散列一樣都用于存儲鍵值對:有序集合的鍵被稱為成員,每個成員都各不相同;而有序集合的值則被稱為分值,必須為浮點型。有序集合是Redis里唯一一個既可以根據(jù)成員訪問分值,又可以根據(jù)分值以及分值的排列順序來訪問元素的結(jié)構(gòu)。
(1)zadd 將一個帶有分值的成員添加到有序集合里面
(2)zrange 根據(jù)元素在有序排列中的位置,從有序集合中獲取多個元素
(3)zrangebyscore 獲取有序集合在給定分值范圍內(nèi)的所有元素
(4)zrem 如果給定的成員存在于有序集合,那么移除該成員
二 使用Redis構(gòu)建Web應用
1,Redis 登錄與Cookie緩存
2,使用Redis實現(xiàn)購物車
購物車的定義:每一個用戶的購物車都是一個散列,這個散列存儲了商品的id和商品訂購數(shù)量之間的映射。對商品數(shù)量的驗證有web應用程序負責,我們需要做的是當商品的訂購數(shù)量變化時對購物車進行更新:如果商品訂購數(shù)量大于0,那么程序會將這個商品的id和定購量添加到散列表里,如果用戶訂購的商品在散列里已存在,那么新的訂購熟練將會覆蓋原來的數(shù)量;相反如果訂購數(shù)量不大于0,那么就會從散列里刪除該商品。
3,頁面緩存
4,數(shù)據(jù)行緩存
數(shù)據(jù)緩存成json格式的原因,因為json格式簡明易懂,目前所有擁有Redis客戶端的編程語言都帶有能高效地編碼和解碼json格式的函數(shù)庫。所以不用xml。
5,網(wǎng)頁分析
三 Redis命令
1,字符串 Redis中的自增和自減命令
INCR INCR key-name 將鍵存儲的值加上1
DECR DECR key-name 將鍵存儲的值減去1
INCRBY INCRBY key-name amount 將鍵存儲的值加上整數(shù)amount
DECRBY DECRBY key-name amount 將鍵存儲的值減去整數(shù)amount
INCRBYFLOAF INCRBYFLOAF key-name amount 將鍵存儲的值加上浮點數(shù)amount
當用戶將一個值存儲到Redis字符串時,有以下三種情況:如果這個值可以被解釋成十進制整數(shù)或者浮點數(shù),那么Redis允許用戶對這個字符串執(zhí)行各種INCR*和DECR*操作
如果用戶對一個不存在的鍵或者一個保存了空字符串的鍵執(zhí)行了自增或者自減操作,那么Redis會把這個值當做0來處理
如果用戶對一個值無法解釋為整數(shù)或者浮點數(shù)的字符串鍵執(zhí)行自增或者自減操作,那么Redis將會返回一個錯誤。
供Redis處理子串和二進制位的命令
APPEND APPEND key-name value 將值value追加到給定鍵key-name當前存儲值的末尾
GETRANGE GETRANGE key-name start end 獲取一個由start到end范圍內(nèi)所有字符組成的字串,包括開頭和結(jié)尾
SETRANGE SETRANGE key-name offset value 將從start偏移量開始的字串設(shè)置為給定值
GETBIT GETBIT key-name offset value 將字符串看做二進制位串,并返回位串中偏移量為offset的二進制位的值
SETBIT SETBIT key-name offset value 將字符串看做二進制位串,并將位串中偏移量為offset的二進制位的值設(shè)置為value
BITCOUNT BITCOUNT key-name [start end] 統(tǒng)計二進制位串中值為1的二進制位的數(shù)量,如果有偏移量,這只統(tǒng)計便宜量內(nèi)的
BITOP BITOP operation dest-key key-name [key-name…] 對一個或多個二進制位串執(zhí)行包括并(and) 或(or) 異或(xor) 非(not)在內(nèi)的任意一種按位運算操作,并將計算得出的結(jié)果保存在dest-key鍵里面
2,列表 常用命令
LINDEX LINDEX key-name offset 返回列表中偏移量為offset的元素
LRANGE LRANGE key-name start end 返回列表從start到end范圍內(nèi)的所有元素,包含start和end元素
LTRIM LTRIM key-name start end 對列表進行修剪,只保留從start到end的元素,start和end元素也會被保留
阻塞式的列表彈出命令以及在列表之間移動元素的命令
BLPOP BLPOP key-name [key-name…..] timeout 從第一個非空列表中彈出位于最左端的元素,或者在timeout秒之內(nèi)阻塞并等待可彈出的元素出現(xiàn)
BRPOP BRPOP key-name [key-name…..] timeout 從第一個非空列表中彈出位于最右端的元素,或者在timeout秒之內(nèi)阻塞并等待可彈出的元素出現(xiàn)
RPOPLPUSE RPOPLPUSE source-key dest-key 從source-key列表中彈出位于最右端的元素,然后將這個元素推入dest-key列表的最左端,并向用戶返回這個元素。
BRPOPLPUSE BRPOPLPUSE source-key dest-key timeout 從source-key列表中彈出位于最右端的元素, 然后將這個元素推入dest-key列表的最左端,并向用戶返回這個元素。如果source-key為空,那么在timeout秒之內(nèi)阻塞并等待可彈出的元素出現(xiàn)
3,集合 常用命令
SCARD SCARD key-name 返回集合包含元素的數(shù)量
SRANDMEMBER SRANDMEMBER key-name [count] 從集合里隨機返回一個或多個元素。當count為整數(shù)時,命令返回的隨機元素不會重復;為負數(shù)時,命令返回的隨機數(shù)有可能重復
SPOP SPOP key-name 隨機的移除集合重點一個元素,并返回移除的元素
SMOVE SMOVE source-key dest-key item 如果集合source-key包含元素item,那么從集合source-key里面移除item,并將item添加到dest-key集合中;如果item被成功移除,那么命令返回1,否者為0
用于組合和處理多個集合的Redis命令
SDIFF SDIFF key-name [key-name…] 返回那些存在于第一個集合。但不存在于其他集合中的元素
SDIFFSTOPE SDIFFSTOPE dest-key key-name [key-name…] 將那些存在于第一個集合,但不存在于其他集合中的元素存儲到dest-key鍵里面
SINTER SINTER key-name [key-name….] 返回那些同時存在于所有集合中的元素(交集運算)
SINTERSTORE SINTERSTORE dest-key key-name [key-name….] 將那些同時存在于所有集合中的元素(交集運算)存儲到dest-key鍵中
SUNION SUNION key-name [key-name….] 返回那些至少存在于一個集合中的元素(并集運算)
SUNIONSTORE SUNIONSTORE dest-key key-name [key-name….] 將那些至少存在于一個集合中的元素存儲到dest-key鍵中
4,散列 用于添加和刪除鍵值對的命令
HMGET HMGET key-name key [key….] 從散列里獲取一個或者多個鍵的值
HMSET HMSET key-name key value [key value….] 為散列里一個或者多個鍵設(shè)置值 (批量操作)
HLEN HLEN key-name 返回散列包含的簡直對數(shù)量
展示Redis散列更高級特性的命令
HEXISTS HEXISTS key-name key 檢查給定的鍵是否存在于散列中
HKEYS HKEYS key-name 獲取散列包含的所有鍵
HVALS HVALS key-name 獲取散列包含的所有值
HINCRBY HINCRBY key-name key increment 將鍵key存儲的值加上整數(shù)increment
HINCRBYFLOAT HINCRBYFLOAT key-name key increment 將鍵key存儲的值加上浮點數(shù)increment
5,有序集合的常用命令
ZCARD ZCARD key-name 返回有序集合包含的成員數(shù)量
ZINCRBY ZINCRBY key-name increment member 將member成員的分值加上increment
ZCOUNT ZCOUNT key-name min max 返回分值介于min和max之間的成員數(shù)量
ZRANK ZEANK key-name member 返回成員member在有序集合中的排名
ZSCORE ZSCORE key-name member 返回成員member的分值
有序集合的范圍型數(shù)據(jù)獲取命令和范圍型刪除命令
ZREVRANK key-name member 返回有序集合里成員member的排名,成員按照分值從大到小排列
ZREVRANGE key-name start stop [WITHSCORES] 返回有序集合給定排名范圍內(nèi)的成員,成員按照分值從大到小排列
ZREVRANGEBYSCORE key max min [WITHSCORES] 獲取有序集合中介于max和min范圍內(nèi)的成員,并按照分值從大到小返回他們
ZREMRANGEBYRANK key-name start stop 移除有序集合中排名介于start和stop之間的所有成員
ZREMRANGEBY SCORE key-name max min 移除有序集合中排名介于min和max之間的所有成員
ZINTERSTORE dest-key key-count key [key…] [WEIGHTS weight[weight… ]] [AGGREGART SUM|MIN|MAX] 對給定的有序集合執(zhí)行類似于集合的交集運算
ZUNIONSTORE dest-key key-count key [key…] [WEIGHTS weight[weight… ]] [AGGREGART SUM|MIN|MAX] 對給定的有序集合執(zhí)行類似于集合的并集運算
6,發(fā)布與訂閱的命令
SUBSCRIBE channel [channel…] 訂閱給定的一個或多個頻道
UNSUBSCRIBE [channel [channel…]] 退訂給定的一個或多個頻道,如果執(zhí)行時沒有給定頻道,那么退訂所有頻道
PUBLISH channel message 像給定的頻道發(fā)送信息
PSUBSCRIBE pattern [psttern….] 訂閱魚給定的模式相匹配的所有頻道
PUNSUBSCRIBE [pattern [psttern….]] 退訂給定的模式,如果執(zhí)行時沒有給定任何模式那么退訂所有模式
7, Redis事務(wù)
Redis的基本事務(wù):需要用到MULTI命令和EXEC命令,這種事務(wù)可以讓一個客戶端在不被其他客戶端打斷的情況下執(zhí)行多個命令。和關(guān)系數(shù)據(jù)庫中可以進行回滾(rollback)的事務(wù)不同,在Redis中,被MULTI命令和EXEC包圍的所有命令會一接一個的執(zhí)行,直到所有的命令執(zhí)行完畢。當一個事務(wù)執(zhí)行完畢后,Redis才回處理其他客戶端。
8,鍵的過期時間
在使用Redi存儲數(shù)據(jù)時,有些數(shù)據(jù)僅在一段時間內(nèi)有用,雖然我們可以在數(shù)據(jù)過期之后手動刪除,但更好的方法是使用Redis提供的鍵過期操作刪除數(shù)據(jù)。
鍵過期命令只能為整個鍵設(shè)置過期時間,而沒有辦法為鍵里單個元素設(shè)置過期時間。
用于處理Redis過期時間的命令
PERSIST key-name 移除鍵的過期時間
TTL key-name 查看給定鍵距離過期還有多少秒
EXPIPE key-name seconds 讓給定的鍵在指定的秒數(shù)之后過期
EXPIPEAT key-name timestamp 將給定鍵的過期時間設(shè)置為給定UNIX時間戳
PPTL key-name查看給定鍵距離過期還有多少毫秒
PEXPIPE key-name milliseseconds 讓給定的鍵在指定毫秒數(shù)之后過期
PEXPIPEAT key-name timestamp- milliseseconds 將一個毫秒精度的UNIX時間戳設(shè)置為給定鍵的過期時間
四 數(shù)據(jù)安全與性能保障
1,數(shù)據(jù)持久化選項
Redis提供兩種不同的持久化方法來將數(shù)據(jù)存儲到硬盤里。第一種方法是 快照(snapshotting),它可以將存在于某一時刻的所有數(shù)據(jù)都寫入硬盤里。第二種方法是 只追加文件(append-only file,AOF),它會在執(zhí)行寫命令時,將執(zhí)行的寫命令復制到硬盤里。這兩種方法既可單獨使用,又可同時使用。
將內(nèi)存里的數(shù)據(jù)存儲到硬盤上的一個主要原因是為了在以后重用數(shù)據(jù),或者是為了防止系統(tǒng)故障而將數(shù)據(jù)備份到一個遠程系統(tǒng)。
總結(jié)
以上是生活随笔為你收集整理的redis将散裂中某个值自增_Redis总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 科学计数法_第一章 科学计数法与近似数
- 下一篇: Java是否为回文_java语言判断一个