亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Redis > 正文

關于使用key-value數據庫redis和TTSERVER的心得體會

2020-03-22 18:00:54
字體:
來源:轉載
供稿:網友
先說redis
redis是一個類似memcached的key/html' target='_blank'>value存儲系統,它支持存儲的value類型相對較多,包括string(字符串)、 list(鏈表)、set(集合)和zset(有序集合)。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件(這點兒個人覺得redis比memcache 在數據保存上要安全一些),并且在此基礎上實現了master- slave(主從)同步。

redis的存取性能很高,SET操作每秒鐘 110000 次,GET操作每秒鐘 81000 次(速度很爽?。?br>Redis針對不同的存儲類型對象提供了不同的命令。
redis目前提供四種數據類型:string,list,set及zset(sorted set)。
string是最簡單的類型,你可以理解成與Memcached一模一個的類型,一個key對應一個value,其上支持的操作與Memcached的操 作類似。但它的功能更豐富。

list是一個鏈表結構,主要功能是push、pop、獲取一個范圍的所有值等等。操作中key理解為鏈表的名字。
set是集合,和我們數學中的集合概念相似,對集合的操作有添加刪除元素,有對多個集合求交并差等操作。操作中key理解為集合的名字。

zset是set的一個升級版本,他在set的基礎上增加了一個順序屬性,這一屬性在添加修改元素的時候可以指定,每次指定后,zset會自動重新按新的 值調整順序。可以理解了有兩列的mysql表,一列存value,一列存順序。操作中key理解為zset的名字。下面提供redis命令:
適合全體類型的命令
EXISTS key 判斷一個鍵是否存在;存在返回 1;否則返回0;
DEL key 刪除某個key,或是一系列key;DEL key1 key2 key3 key4
TYPE key 返回某個key元素的數據類型 ( none:不存在,string:字符,list,set,zset,hash)
KEYS pattern 返回匹配的key列表 (KEYS foo*:查找foo開頭的keys)
RANDOMKEY 隨機獲得一個已經存在的key,如果當前數據庫為空,則返回空字符串
RENAME oldname newname更改key的名字,新鍵如果存在將被覆蓋
RENAMENX oldname newname 更改key的名字,如果名字存在則更改失敗
DBSIZE返回當前數據庫的key的總數
EXPIRE設置某個key的過期時間(秒),(EXPIRE bruce 1000:設置bruce這個key1000秒后系統自動刪除)注意:如果在還沒有過期的時候,對值進行了改變,那么那個值會被清除。
TTL查找某個key還有多長時間過期,返回時間秒
SELECT index 選擇數據庫
MOVE key dbindex 將指定鍵從當前數據庫移到目標數據庫 dbindex。成功返回 1;否則返回0(源數據庫不存在key或目標數據庫已存在同名key);
FLUSHDB 清空當前數據庫中的所有鍵
FLUSHALL 清空所有數據庫中的所有鍵處理字符串的命令
SET key value 給一個鍵設置字符串值。SET keyname datalength data (SET bruce 10 paitoubing:保存key為burce,字符串長度為10的一個字符串paitoubing到數據庫),data最大不可超過1G。
GET key獲取某個key 的value值。如key不存在,則返回字符串“nil”;如key的值不為字符串類型,則返回一個錯誤。

GETSET key value可以理解成獲得的key的值然后SET這個值,更加方便的操作 (SET bruce 10 paitoubing,這個時候需要修改bruce變成1234567890并獲取這個以前的數據paitoubing,GETSET bruce 10 1234567890)
MGET key1 key2 … keyN 一次性返回多個鍵的值

SETNX key value SETNX與SET的區別是SET可以創建與更新key的value,而SETNX是如果key不存在,則創建key與value數據
MSET key1 value1 key2 value2 … keyN valueN 在一次原子操作下一次性設置多個鍵和值
MSETNX key1 value1 key2 value2 … keyN valueN 在一次原子操作下一次性設置多個鍵和值(目標鍵不存在情況下,如果有一個以上的key已存在,則失?。?br>INCR key 自增鍵值
INCRBY key integer 令鍵值自增指定數值
DECR key 自減鍵值
DECRBY key integer 令鍵值自減指定數值處理 lists 的命令
RPUSH key value 從 List 尾部添加一個元素(如序列不存在,則先創建,如已存在同名Key而非序列,則返回錯誤)
LPUSH key value 從 List 頭部添加一個元素
LLEN key 返回一個 List 的長度
LRANGE key start end從自定的范圍內返回序列的元素 (LRANGE testlist 0 2;返回序列testlist前0 1 2元素)
LTRIM key start end修剪某個范圍之外的數據 (LTRIM testlist 0 2;保留0 1 2元素,其余的刪除)
LINDEX key index返回某個位置的序列值(LINDEX testlist 0;返回序列testlist位置為0的元素)
LSET key index value更新某個位置元素的值
LREM key count value 從 List 的頭部(count正數)或尾部(count負數)刪除一定數量(count)匹配value的元素,返回刪除的元素數量。
LPOP key 彈出 List 的第一個元素
RPOP key 彈出 List 的最后一個元素
RPOPLPUSH srckey dstkey 彈出 _srckey_ 中最后一個元素并將其壓入 _dstkey_頭部,key不存在或序列為空則返回“nil”處理集合(sets)的命令(有索引無序序列)
SADD key member增加元素到SETS序列,如果元素(membe)不存在則添加成功 1,否則失敗 0;(SADD testlist 3 /n one)
SREM key member 刪除SETS序列的某個元素,如果元素不存在則失敗0,否則成功 1(SREM testlist 3 /N one)
SPOP key 從集合中隨機彈出一個成員
SMOVE srckey dstkey member 把一個SETS序列的某個元素 移動到 另外一個SETS序列 (SMOVE testlist test 3/n two;從序列testlist移動元素two到 test中,testlist中將不存在two元素)
SCARD key 統計某個SETS的序列的元素數量
SISMEMBER key member 獲知指定成員是否存在于集合中
SINTER key1 key2 … keyN 返回 key1, key2, …, keyN 中的交集
SINTERSTORE dstkey key1 key2 … keyN 將 key1, key2, …, keyN 中的交集存入 dstkey
SUNION key1 key2 … keyN 返回 key1, key2, …, keyN 的并集
SUNIONSTORE dstkey key1 key2 … keyN 將 key1, key2, …, keyN 的并集存入 dstkey
SDIFF key1 key2 … keyN 依據 key2, …, keyN 求 key1 的差集。官方例子:
key1 = x,a,b,c
key2 = c
key3 = a,d
SDIFF key1,key2,key3 = x,b
SDIFFSTORE dstkey key1 key2 … keyN 依據 key2, …, keyN 求 key1 的差集并存入 dstkey
SMEMBERS key 返回某個序列的所有元素
SRANDMEMBER key 隨機返回某個序列的元素處理有序集合(sorted sets)的命令 (zsets)
ZADD key score member 添加指定成員到有序集合中,如果目標存在則更新score(分值,排序用)
ZREM key member 從有序集合刪除指定成員
ZINCRBY key increment member 如果成員存在則將其增加_increment_,否則將設置一個score為_increment_的成員
ZRANGE key start end 返回升序排序后的指定范圍的成員
ZREVRANGE key start end 返回降序排序后的指定范圍的成員
ZRANGEBYSCORE key min max 返回所有符合score = min和score = max的成員 ZCARD key 返回有序集合的元素數量 ZSCORE key element 返回指定成員的SCORE值 ZREMRANGEBYSCORE key min max 刪除符合 score = min 和 score = max 條件的所有成員。使用體會:
個人在覺得redis速度是不用說了(很快的),但是很消耗物理內存,算是redis的一個弊端吧,redis適合數據量比較小速度更新快的類型的網站,比如社區,不適合數據比較龐大的網站,比如論壇。以前用redis應用的一個論壇帖子上,但是因為數據量太大,消耗物理內存驚人而放棄了用 redis!再說說TTSERVER
Tokyo Cabinet 是一個DBM的實現。這里的數據庫由一系列key-value對的記錄構成。key和value都可以是任意長度的字節序列,既可以是二進制也可以是字符串。這里沒有數據類型和數據表的概念。當做為Hash表數據庫使用時,每個key必須是不同的,因此無法存儲兩個key相同的值。提供了以下訪問方法:提供key,value參數來存儲,按 key刪除記錄,按key來讀取記錄,另外,遍歷key也被支持,雖然順序是任意的不能被保證。這些方法跟Unix標準的DBM,例如GDBM,NDBM 等等是相同的,但是比它們的性能要好得多(因此可以替代它們) 當按B+樹來存儲時,擁用相同key的記錄也能被存儲。像hash表一樣的讀取,存儲,刪除函數也都有提供。記錄按照用戶提供的比較函數來存儲??梢圆捎庙樞蚧虻剐虻挠螛藖碜x取每一條記錄。依照這個原理,向前的字符串匹配搜索和整數區間搜索也實現了。另外,B+樹的事務也是可用的。對于定長的數組,記錄按自然數來標記存儲。不能存儲key相同的兩條或更多記錄。另外,每條記錄的長度受到限 制。讀取方法和hash表的一樣。 Tokyo Cabinet是用C寫的,同時提供c,perl,ruby,java的API。Tokyo Cabinet在提供了POSIX和C99的平臺上都可用,它以GNU Lesser Public License協議發布。

tokyocabinet :一個key-value的DBM數據庫,但是沒有提供網絡接口,以下稱TC。
tokyotyrant :是為TC寫的網絡接口,他支持memcache協議,也可以通過HTTP操作,以下稱TT。性能:
Tokyo Cabinet 是日本人 平林幹雄 開發的一款 DBM 數據庫,Tokyo Cabinet基于GNU Lesser General Public License協議發布,采用C語言開發,它可以運行在任何支持C99和POSIX平臺上使用。相比一般的DBM數據庫有以下幾個特點:空間小,效率高,性能高,可靠性高,多種開發語言的支持(現已提供C,Perl,Ruby,Java,Lua的API),支持64位操作系統。該數據庫讀寫非???,哈希模式寫入100萬條數據只需0.643秒,讀取100萬條數據只需0.773秒,是 Berkeley DB 等 DBM 的幾倍。

Tokyo Tyrant 加上 Tokyo Cabinet,構成了一款支持高并發的分布式持久存儲系統,對任何原有Memcached客戶端來講,可以將Tokyo Tyrant看成是一個Memcached,但是,它的數據是可以持久存儲的。這一點,跟新浪的Memcachedb性質一樣。

ttserver和memcache比較:
ttserver是數據庫,memcached是緩存。兩者都是保存 key,value 形式的數據,通過key進行任何操作。ttserver可以將數據持久化保存,memcached全部是保存在內存中,memcached會自動刪除過期數據,最長不超過30天。memcached在和一些api配合時,能自動進行數據的出入序列化,讀取反序列化。ttserver有主從復制的功能,操作日志等,這完全是數據庫才有的東西。據說memcached正在對整體架構做調整,到時候支持plugin機制.會把網絡,事件處理,內存存儲剝離開來.以后要做基于磁盤的key-value存儲就可以寫一個存儲引擎就成了。memcached的二次開發又步入一個小高潮。
PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线观看网站| 国产日韩欧美一二三区| 欧美另类在线播放| 美日韩精品免费视频| 亚洲电影在线观看| 热99精品只有里视频精品| 欧美伊久线香蕉线新在线| 午夜精品一区二区三区在线视频| 国产一区二区三区在线| 成人久久久久久| 国产在线视频不卡| 日韩中文理论片| 日韩av免费在线看| 欧美日韩国产影院| 国产激情综合五月久久| 久久福利视频导航| 日韩欧美国产中文字幕| 亚洲区免费影片| 亚洲精品xxx| 日韩中文字幕在线免费观看| 欧美亚洲另类视频| 欧美国产日韩精品| 欧美理论在线观看| 在线a欧美视频| 欧美日韩亚洲一区二区| 欧美大全免费观看电视剧大泉洋| 91在线观看免费| 欧美日韩国产va另类| 久久久久中文字幕| 精品五月天久久| 欧美亚洲国产另类| 美日韩丰满少妇在线观看| 欧美xxxx14xxxxx性爽| 国产69精品久久久| 国产综合视频在线观看| 热99精品只有里视频精品| 欧美在线国产精品| 日韩第一页在线| 日韩性生活视频| 狠狠爱在线视频一区| 欧美韩日一区二区| 欧美激情在线视频二区| 97视频在线观看成人| 久久99久久亚洲国产| 欧美怡春院一区二区三区| 亚洲国产精久久久久久久| 日韩美女在线观看一区| 久久久久久久久久久亚洲| 亚洲国产精品久久久久久| 国产综合久久久久| 成人久久18免费网站图片| 亚洲国产日韩精品在线| 精品一区二区三区三区| 亚洲精品网站在线播放gif| 日本不卡视频在线播放| 色噜噜久久综合伊人一本| 日韩免费电影在线观看| 日韩精品在线第一页| 久久男人资源视频| 欧美日韩中国免费专区在线看| 青青久久av北条麻妃海外网| 精品久久久久久久久中文字幕| 中文字幕国产精品久久| 国产精品免费一区豆花| 国产精品综合久久久| 2018中文字幕一区二区三区| 日韩在线观看精品| 一本一本久久a久久精品综合小说| 国产精品1区2区在线观看| 久久九九精品99国产精品| 综合国产在线观看| 亚洲第一在线视频| xxx成人少妇69| 海角国产乱辈乱精品视频| 成人久久久久久久| 欧美日韩国产一区二区三区| 国产视频精品久久久| 91精品国产乱码久久久久久久久| 欧美一级大胆视频| 亚洲一区中文字幕在线观看| 欧美精品在线播放| 久久久精品一区二区三区| 欧美老肥婆性猛交视频| 伊人久久精品视频| 久久久久久久久久亚洲| 亚洲人成伊人成综合网久久久| 久久久视频在线| 91色中文字幕| 日韩欧美亚洲国产一区| 高跟丝袜一区二区三区| 欧美精品在线播放| 欧美日韩aaaa| 日韩精品在线免费| 国产精品久久久久999| 日韩中文字幕第一页| 日韩美女中文字幕| 欧美激情在线播放| 国产欧美日韩中文字幕| 久久久久久久久国产| 不卡在线观看电视剧完整版| 欧美精品手机在线| 亚洲一级一级97网| 国产一区二区三区精品久久久| 2020国产精品视频| 国产精品免费福利| 久久久影视精品| 日韩av在线看| 亚洲男人天堂久| 日韩精品999| 不卡在线观看电视剧完整版| 91视频国产精品| 精品在线欧美视频| 亚洲欧美国产一区二区三区| 欧美中文字幕精品| 日韩精品中文字| 久久色精品视频| 中文字幕在线国产精品| 在线观看欧美www| 欧美极品美女电影一区| 亚洲高清久久网| 国产精品欧美风情| 亚洲午夜精品久久久久久性色| 影音先锋欧美精品| 欧美激情精品久久久久| 日韩欧美精品中文字幕| 欧美丰满少妇xxxxx| 亚洲精品xxx| 狠狠色狠狠色综合日日小说| 亚洲一区二区三区在线视频| 91久久久久久久久久久久久| 91精品国产自产在线老师啪| 亚洲区在线播放| 日韩欧美亚洲范冰冰与中字| 国产精品久久久久久久久久99| 亚洲欧美成人网| 久久久久久综合网天天| 国产精品亚洲欧美导航| 精品久久香蕉国产线看观看亚洲| 日韩美女视频中文字幕| 日韩av在线免费观看一区| 人九九综合九九宗合| 97涩涩爰在线观看亚洲| 国内外成人免费激情在线视频| 国产91色在线| 一区二区三区视频观看| 国产精品第一第二| 欧美一区深夜视频| 亚洲高清一二三区| 亚洲福利在线观看| 性色av一区二区三区免费| 综合网日日天干夜夜久久| 欧美丝袜美女中出在线| 精品久久久久久久久国产字幕| 亚洲第一天堂av| 亚洲第一精品夜夜躁人人躁| 国产精品久久久久久久9999| 亚洲国产精品久久久久久| 亚洲一区二区三区在线免费观看| 韩国福利视频一区| 久久99精品久久久久久噜噜| 国产日产亚洲精品| 久久亚洲精品视频| 不卡伊人av在线播放| 中文字幕欧美日韩va免费视频|