redis 學習記錄,redis記錄

來源:互聯網
上載者:User

redis 學習記錄,redis記錄
redis是一個key-value儲存系統。和Memcached類似,它支援儲存的value類型相對更多,包括string(字串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(雜湊類型)。這些資料類型都支援push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支援各種不同方式的排序。與memcached一樣,為了保證效率,資料都是緩衝在記憶體中。區別的是redis會周期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案,並且在此基礎上實現了master-slave(主從)同步。Redis 是一個高效能的key-value資料庫。 redis的出現,很大程度補償了memcached這類key/value儲存的不足,在部 分場合可以對關聯式資料庫起到很好的補充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等用戶端,使用很方便。[1] Redis支援主從同步。資料可以從主伺服器向任意數量的從伺服器上同步,從伺服器可以是關聯其他從伺服器的主伺服器。這使得Redis可執行單層樹複製。存檔可以有意無意的對資料進行寫操作。由於完全實現了發布/訂閱機制,使得從資料庫在任何地方同步樹時,可訂閱一個頻道並接收主伺服器完整的訊息發布記錄。同步對讀取操作的可擴充性和資料冗餘很有協助。redis的官網地址,非常好記,是redis.io。(特意查了一下,網域名稱尾碼io屬於國家網域名稱,是british Indian Ocean territory,即英屬印度洋地區)

目前,Vmware在資助著redis項目的開發和維護。

5種基本type:String hash list set zsetstringsstring是最簡單類型,是二進位安全的 包含任何資料比片和對象序列化set name helloget keysetnx 如果k存在返加0 nx note exist 不覆蓋,不存在設定新值setnx name hellosetex 設定k的值為string類型的value 並且指定有效期間setex namex 10 jak 10秒有效期間setrange 設定 指定key的value值 的子字串get namexiaomingxxxxxx@126.comsetrange name 8 aaaaaa 從下標開始 替換指定長度跟替換的一樣get namemset 一次設定多個key的值 失敗全不成功mset k1 xiaoming k2 xiaohongmsetnx note exis 不會覆蓋已經存在的keygetset 設定key的值 並返回key的舊值getset k1 hellogetrange 擷取key的value的子字串getrange k1 0 3 從0到第3個返回mget 批量擷取mget k1 k2incr 遞增set k3 10incr k3incrby k4 10 加指定值 key不存在 則設定key 為認為原來的value為0incrby k4 -10decr 對key的值做減減decrby 指定減append 給指定key的字串追加valueappend k1 world  返回長度strlen 傳回值長度strlen k1

hashset類型 是一個string類型的field和value的映射表,它的添加、刪除操作都是0(1)(平均)hash特別適合用於儲存物件,相較於將對象的每個欄位存成單個string 類型將一個對象存在hash中會暫用很少的內在,並且可以方便的存取整個對象hset 設定hash field為指定值  如果key不存在 則先建立hset myhash field hellohset user:001 name jakhget user:001 namehsetnx user:002 name hellohmset 批量設值hmset myhash field hello field2 worldhmget 擷取所有健hmget user:002 name age x 批量返回hincrby user:002 age 10 自增hexists hash表欄位是否存在hexists user:002 agehlen返回指定hash的key數hlen user:002hdel 刪除指定hash的field欄位hdel myhash agehkeys 返回hash所有欄位hkeys user:002hvals 返回hash所有valuehvals user:002hgetall 擷取某個hash中全部的欄位和值hgetall user:002


==================list start===========================list是一個鏈表結構,主要功能是push,pop,擷取一個範圍的所有值等等,操作中key理解為鏈表的名字。redis的list類型其實就是一個每個子項目都是string類型的雙向鏈表。我們可以通過push pop操作從鏈表的頭部或者尾部添加刪除元素這樣list即可以作為棧,又可以作為隊列。push 壓入一個元素pop  彈出一個元素lpush 從頭部壓入一個元素 先進後出lpush mylist worldlpush mylist hellolrange mylist 0 -1 取元素hello worldrpush從尾部壓入元素  先進先出 隊列rpush list2 jakrpush list2  tomlrange list2 0 -1jaktomlinsert 在key對應list的特定位置前或後添加字串linsert list2 before jak sumlset 設定list中指定下標元素替換掉lset list2 1 updatevlrem 從key對應list中刪除N個和value相同的元素(n<0從尾刪除,N=0全部刪除)lrem list2 2 jak 刪除 幾個元素ltrim 保留指定key的值範圍內的資料ltrim list2 1 -1 把第0個刪掉lpop 從list的頭部刪除元素 並返回刪除元素lpop list2 rpop 從尾部彈出一個元素rpop list2lpoplpush 從第一個list的尾部移除元素並添加到第二個list的頭部lpoplpush list2 list3lindex 返回名稱為key的list中index位置的元素 linex  list2 0lindex list2 1llen 返回key對應list的長度sllen list2==================list end===========================

===========sets 無序集合================sadd myset1 onesadd myset1 twosadd myset1 two  不能增加重複值smembers myset1 查看元素srem 刪除srem myset1 onespop 隨機彈出元素sdiff 返回所有給定key與第一個Key的差集sdiff myset1 myset2sdiffstore 儲存差集的值sdiffstore myset3 myset1 myset2sinter 交集sinter myset1 myset2sinterstore  儲存交集的值sunion 返回所有給定key的並集sunion myset1 myset2sunionstore 儲存並集smove 從第一key對應的set中移除元素並添加到第二個對誚的set中smove myset1 myset2 three 把three從1移到2中scard 返回名稱key的集合個數sismember 測試元素是否是名稱為key的Set的元素sismember myset1 two 返回1代表是sismember myset1 twox 返回0代表不是srandmember 隨機返回集合的一個元素 ,但不刪除元素srandmember myset1====================



=============sorted sets 有序集合===========================是set的一個升級版本 加一個順序屬性zset會自動重新排序, 可以理解為有兩列的mysql表一列存value 一列為順序,操作過程中 key可以理解為名稱zadd 向名稱為key的zset中添加元素member,score用於排序如果該元素存在,則更新其順序zadd myzset 1 onezadd myzset 2 twozadd myzset 3 two 會把順序更新為3zrange myzset 0 -1 withscores 0第一個位置 -1 最後一個zrem 刪除名稱為key的zset中的元素memberzrem myzset1 onezincrby 以指定值增加如果在名稱為key的zset中已經存在元素memebre,則該元素的score增加incremernt否則向該集合中添加該元素,其score的值為incrementzincrby myzset 4 two 對順序號進行增加-數為減zrank 返回名稱為key的zset中memebr元素的排名(按score從小到大排序) 即下標zrank myzset1 two



相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.