1、String 1.1 數據結構 long len byte數組長度 long free 可用數組長度 char buff[] 數據內容 1.2 命令 鍵值:設置值經過字符串名 set:設置鍵值 setnx(set not exist):設置鍵值|若鍵不存在則能夠存,不然返回0. setex(set expire):設置鍵值(含過時時間),set key seconeds value setrange:設置指定位置key的鍵值 例如setrange name diaodiao 2 haha-->dihahaao 從第二個位置開始替換 mset:設置多個鍵值 msetnx:設置多個不存在的鍵值 get:經過鍵得到值 getset:先經過鍵得到值,再設置值。 getrange(0~-1):獲取指定範圍的字符。範圍|從左往右數從0開始 從右往左數-1開始。例如hello(0~4|-5~-1) mget:得到多個鍵的值。 數字類型相關操做 set age 10(如下操做都是針對10操做) incr 遞增1 incr age-->11 incrby 遞增指定數字-->incr age 5->16 decr 遞減1 decrby 遞減指定值 字符屬性操做 set name "hello" append:在尾部追加字符串 append name "Diaodiao"->helloDiaodiao strlen: 得到字符串長度 strlen name ->5
2、hashes(存儲鍵值對,相似於hashmap) 2.1 配置(redis.conf配置文件中) 默認:hash-max-zipmap-entries 配置字段最多64個(key的個數) hash-max-zipmap-value 配置value最大爲512字節 2.2 命令(參考String) hset key field value hset:若key不存在就建立,不然覆蓋。 hsetnx:設置 hash field 爲指定值,若是 key 不存在,則先建立。若是 field 已經存在,返回 0,nx 是not exist 的意思。 hmset:同時設置hash多個field hget:獲取指定的hash field hmget:獲取所有指定的hash field hexists:測試指定field是否存在 hlen:返回指定的field的個數 hdel:刪除指定field。 hkeys:查詢指定key的全部field hvals:獲取指定key的全部value hgetall:得到指定key的全部field以及值 3、lists 3.1 簡介 list是基於雙向鏈表的數據結構,操做就是入棧(push)、出棧(pop),包括左(頭)入出棧、右(尾)入出棧,也含有超時阻塞的功能。 3.2 命令 lpush:在key對應的list的頭部添加元素。 lrange:得到list範圍的值。 lrange mylist start(0) stop(2)(獲取0 1 2索引的值) rpush:在key對應的list的尾部添加元素 linsert:在key對應的特定位置以前或者以後添加字符串元素 linsert mylist before 「world」 「hello」 lset:設置list指定下表的元素(從0開始) lrem:從key對應的list裏,刪除count個value相同的元素。 ltrim:保留指定key的值範圍內的數據。 lpop:從list的頭部刪除元素,而且返回刪除元素 rpop:從list的尾部刪除元素,而且返回刪除元素 rpoplpush:第一個list的尾部移除元素而且添加到第二個list的頭部 lindex:返回名稱爲key的list中index位置的元素 llen:返回key對應list的長度 4、sets 4.1 簡介 sets是無序集合,是經過hashtable實現的。額外功能有並集、交集、差集。 4.2 命令 sadd:向名稱爲key的set當中添加元素 srem:刪除名稱爲key的元素 spop:隨機返回而且刪除set中某key元素 sdiff:兩個set的差集 sdiffstore:假設有set三、set一、set2-->set1與set2差集返回的元素,添加到set3中 sinter:兩個set的交集 sinterstore:假設有set三、set一、set2-->set1與set2交集返回的元素,添加到set3中 sunion:兩個set的並集 sunionstore:假設有set三、set一、set2-->set1與set2交集返回的元素,添加到set3中 smove:假設有set一、set2-->刪除set1的某個key值,而且添加到set2 scard:返回set的元素個數 sismember:測試set中是否存在某member(元素)。 srandmember:隨機返回一個元素,可是不刪除 5、sorted set 5.1 簡介 sorted set(skip list|雙向鏈表和hashtable的結合體)是set的一個升級版本,升級版本的sets,有兩個緯度,一個緯度用來存順序,一個緯度用於存value。 5.2 命令 zadd:向名稱爲key的zset中添加元素member、score用於排序。若是該元素存在,則根據score更新該元素的順序 zrem:刪除名爲key的zset的元素member zincrby:若是在名稱爲 key 的 zset 中已經存在元素 member,則該元素的 score 增長 increment;不然向集合中添加該元素,其 score 的值爲 increment zrank:返回名稱爲 key 的 zset 中 member 元素的排名(按 score 從小到大排序)即下標 zrevrank:返回名稱爲 key 的 zset 中 member 元素的排名(按 score 從大到小排序)即下標 zrange:返回名稱爲 key 的 zset(按 score 從小到大排序)中的 index 從 start 到 end 的全部元素 zrevrange:返回名稱爲 key 的 zset(按 score 從大到小排序)中的 index 從 start 到 end 的全部元素 zrangebyscore:返回集合中 score 在給定區間的元素 zcount:返回集合中 score 在給定區間的數量 zcard:返回集合中元素個數 zscore:返回給定元素對應的 score zremrangebyrank:刪除集合中排名在給定區間的元素 zremrangebytscore:刪除集合中 score 在給定區間的元素
1、鍵值相關命令 keys *|key*|key??? exists key:確認一個 key 是否存在 del key:刪除一個 key expire key seconeds:設置一個 key 的過時時間(單位:秒) move:將當前數據庫中的 key 轉移到其它數據庫中。 persist:移除給定 key 的過時時間 ttl:查看過時還須要多長時間 randomkey:隨機返回命名空間的一個key renamekey:重命名key type:返回值類型 2、元務器相關命令 ping:測試鏈接是否存活 echo:在命令行打印一些內容 select:選擇數據庫。Redis 數據庫編號從 0~15,咱們能夠選擇任意一個數據庫來進行數據的存取。 quit:退出鏈接。 dbsize:返回當前數據庫中 key 的數目。 info:獲取服務器的信息和統計。 monitor:實時轉儲收到的請求。 config:獲取服務器配置信息。 flushdb:刪除當前選擇數據庫中的全部 key。 flushall:刪除全部數據庫中的全部 key。
一、安全性:設置每次命令以前都要確認密碼|在redis.conf配置文件中修改 requirepass 二、主從複製 2.1 特色 (1)master能夠擁有多個slave (2)多個slave能夠鏈接同一個master外,還能夠鏈接其餘slave (3)主從複製不會阻塞master,同步數據,master能夠繼續處理client。 (4)提升系統的伸縮性 2.2、搭建過程 參考:http://www.cnblogs.com/qiuyong/p/6705689.html
3、事務控制 3.1 簡單事務控制 multi-->事務begin exec-->退出提交 3.2 事務回滾 muliti-->事務begin discard-->事務回滾 四、持久化 4.1 snapshotting(默認)-快照方式 將數據以快照的方式寫入到二進制文件中,也是dump.rpb。執行save、bgsave的時候會對dump.rpb 保存方式 save:手動存儲、阻塞當前線程,把內存數據存到dump.rpb中。 bgsave:開啓子線程、調用fork操做,後臺將內存數據存到dump.rpb中。 redis.conf中默認設置爲自動bgsave。 缺陷: 假設有client一、client2. client1執行flushall、把內存數據所有清除。 client2執行的時候,由於以前數據在未知狀況下被清除,這樣就會形成很大的麻煩。 一般狀況下,咱們先把save以前,把相應dump.rpb轉移到其餘目錄下進行保存,利於數據恢復。 4.2 aof(append-only file)-->若是應用要求不能丟失任何修改的話,能夠採用 aof 持久化方式 機制:默認每隔一秒,redis會收到寫命令,把內容追加到appendonnly.aof文件中。 配置redis.conf appendonly yes //啓用 aof 持久化方式
# appendfsync always //收到寫命令就當即寫入磁盤,最慢,可是保證徹底的持久化
appendfsync everysec //每秒鐘寫入磁盤一次,在性能和持久化方面作了很好的折中
# appendfsync no //徹底依賴 os,性能最好,持久化沒保證
5、發佈及訂閱消息 5.1 訂閱者 subscribe 通道(頻道)例如tv1/tv2/tv3 psubscribe tv*例如tv開頭的消息都能收到 5.2 發送者 publish tv1 message 5.3 退出訂閱模式:unsubscribe、unpsubscribe 6、Pipeline 批量發送請求 1、普通方式 基於tcp的鏈接方式,每次都要等着回覆才能執行 2、Pipeline方式 多個命令執行完之後,而後把執行結構返回給客戶端。 7、虛擬內存相關配置 vm-enabled yes #開啓 vm 功能 vm-swap-file /tmp/redis.swap #交換出來的 value 保存的文件路徑 vm-max-memory 1000000 #redis 使用的最大內存上限 vm-page-size 32 #每一個頁面的大小 32 個字節 vm-pages 134217728 #最多使用多少頁面 vm-max-threads 4 #用於執行 value 對象換入換出的工做線程數量