(1)redis容許模糊查詢key 有3個通配符 *、?、[]mysql
(2)randomkey:返回隨機key ajax
(3)type key:返回key存儲的類型redis
(4)exists key:判斷某個key是否存在sql
(5)del key:刪除key數據庫
(6)rename key newkey:更名安全
(7)renamenx key newkey:若是newkey不存在則修改爲功服務器
(8)move key 1:將key移動到1數據庫app
(9)ttl key:查詢key的生命週期(秒)dom
(10)expire key 整數值:設置key的生命週期以秒爲單位測試
(11)pexpire key 整數值:設置key的生命週期以毫秒爲單位
(12)pttl key:查詢key 的生命週期(毫秒)
(13)perisist key:把指定key設置爲永久有效
(1)set key value [ex 秒數] [px 毫秒數] [nx/xx]
若是ex和px同時寫,則之後面的有效期爲準
nx:若是key不存在則創建
xx:若是key存在則修改其值
(2)get key:取值
(3)mset key1 value1 key2 value2 一次設置多個值
(4)mget key1 key2 :一次獲取多個值
(5)setrange key offset value:把字符串的offset偏移字節改爲value
若是偏移量 > 字符串長度,該字符自動補0x00
(6)append key value :把value追加到key 的原值上
(7)getrange key start stop:獲取字符串中[start, stop]範圍的值
對於字符串的下標,左數從0開始,右數從-1開始
注意:當start>length,則返回空字符串
當stop>=length,則截取至字符串尾
若是start所處位置在stop右邊,則返回空字符串
(8)getset key nrevalue:獲取並返回舊值,在設置新值
(9)incr key:自增,返回新值,若是incr一個不是int的value則返回錯誤,incr一個不存在的key,則設置key爲1
(10)incrby key 2:跳2自增
(11)incrbyfloat by 0.7: 自增浮點數
(12)setbit key offset value:設置offset對應二進制上的值,返回該位上的舊值
注意:若是offset過大,則會在中間填充0
offset最大到多少
2^32-1,便可推出最大的字符串爲512M
(13)bitop operation destkey key1 [key2..] 對key1 key2作opecation並將結果保存在destkey上
opecation能夠是AND OR NOT XOR
(14)strlen key:取指定key的value值的長度
(15)setex key time value:設置key對應的值value,並設置有效期爲time秒
Redis的list類型其實就是一個每一個子元素都是string類型的雙向鏈表,鏈表的最大長度是2^32。list既能夠用作棧,也能夠用作隊列。
list的pop操做還有阻塞版本,主要是爲了不輪詢
(1)lpush key value:把值插入到鏈表頭部
(2)rpush key value:把值插入到鏈表尾部
(3)lpop key :返回並刪除鏈表頭部元素
(4)rpop key: 返回並刪除鏈表尾部元素
(5)lrange key start stop:返回鏈表中[start, stop]中的元素
(6)lrem key count value:從鏈表中刪除value值,刪除count的絕對值個value後結束
count > 0 從表頭刪除 count < 0 從表尾刪除 count=0 所有刪除
(7)ltrim key start stop:剪切key對應的連接,切[start, stop]一段並把改制從新賦給key
(8)lindex key index:返回index索引上的值
(9)llen key:計算鏈表的元素個數
(10)linsert key after|before search value:在key 鏈表中尋找search,並在search值以前|以後插入value
(11)rpoplpush source dest:把source 的末尾拿出,放到dest頭部,並返回單元值
應用場景: task + bak 雙鏈表完成安全隊列
業務邏輯: rpoplpush task bak
接收返回值並作業務處理
若是成功則rpop bak清除任務,若是不成功,下次從bak表取任務
(12)brpop,blpop key timeout:等待彈出key的尾/頭元素
timeout爲等待超時時間,若是timeout爲0則一直等待下去
應用場景:長輪詢ajax,在線聊天時能用到
Redis hash 是一個string類型的field和value的映射表,它的添加、刪除操做都是O(1)(平均)。hash特別適用於存儲對象,將一個對象存儲在hash類型中會佔用更少的內存,而且能夠方便的存取整個對象。
配置: hash_max_zipmap_entries 64 #配置字段最多64個
hash_max_zipmap_value 512 #配置value最大爲512字節
(1)hset myhash field value:設置myhash的field爲value
(2)hsetnx myhash field value:不存在的狀況下設置myhash的field爲value
(3)hmset myhash field1 value1 field2 value2:同時設置多個field
(4)hget myhash field:獲取指定的hash field
(5)hmget myhash field1 field2:一次獲取多個field
(6)hincrby myhash field 5:指定的hash field加上給定的值
(7)hexists myhash field:測試指定的field是否存在
(8)hlen myhash:返回hash的field數量
(9)hdel myhash field:刪除指定的field
(10)hkeys myhash:返回hash全部的field
(11)hvals myhash:返回hash全部的value
(12)hgetall myhash:獲取某個hash中所有的field及value
特色:無序性、肯定性、惟一性
(1)sadd key value1 value2:往集合裏面添加元素
(2)smembers key:獲取集合全部的元素
(3)srem key value:刪除集合某個元素
(4)spop key:返回並刪除集合中1個隨機元素(能夠坐抽獎,不會重複抽到某人)
(5)srandmember key:隨機取一個元素
(6)sismember key value:判斷集合是否有某個值
(7)scard key:返回集合元素的個數
(8)smove source dest value:把source的value移動到dest集合中
(9)sinter key1 key2 key3:求key1 key2 key3的交集
(10)sunion key1 key2:求key1 key2 的並集
(11)sdiff key1 key2:求key1 key2的差集
(12)sinterstore res key1 key2:求key1 key2的交集並存在res裏
概念:它是在set的基礎上增長了一個順序屬性,這一屬性在添加修改元素的時候能夠指定,每次指定後,zset會自動按新的值調整順序。能夠理解爲有兩列的mysql表,一列存儲value,一列存儲順序,操做中key理解爲zset的名字。
和set同樣sorted,sets也是string類型元素的集合,不一樣的是每一個元素都會關聯一個double型的score。sorted set的實現是skip list和hash table的混合體。
當元素被添加到集合中時,一個元素到score的映射被添加到hash table中,因此給定一個元素獲取score的開銷是O(1)。另外一個score到元素的映射被添加的skip list,並按照score排序,因此就能夠有序地獲取集合中的元素。添加、刪除操做開銷都是O(logN)和skip list的開銷一致,redis的skip list 實現是雙向鏈表,這樣就能夠逆序從尾部去元素。sorted set最常用方式應該就是做爲索引來使用,咱們能夠把要排序的字段做爲score存儲,對象的ID當元素存儲。
(1)zadd key score1 value1:添加元素
(2)zrange key start stop [withscore]:把集合排序後,返回名次[start,stop]的元素 默認是升續排列 withscores 是把score也打印出來
(3)zrank key member:查詢member的排名(升序0名開始)
(4)zrangebyscore key min max [withscores] limit offset N:集合(升序)排序後取score在[min, max]內的元素,並跳過offset個,取出N個
(5)zrevrank key member:查詢member排名(降序 0名開始)
(6)zremrangebyscore key min max:按照score來刪除元素,刪除score在[min, max]之間
(7)zrem key value1 value2:刪除集合中的元素
(8)zremrangebyrank key start end:按排名刪除元素,刪除名次在[start, end]之間的
(9)zcard key:返回集合元素的個數
(10)zcount key min max:返回[min, max]區間內元素數量
(11)zinterstore dest numkeys key1[key2..] [WEIGHTS weight1 [weight2...]] [AGGREGATE SUM|MIN|MAX]
求key1,key2的交集,key1,key2的權值分別是weight1,weight2
聚合方法用 sum|min|max
聚合結果 保存子dest集合內
注意:weights,aggregate如何理解?
答:若是有交集,交集元素又有score,score怎麼處理?aggregate num->score相加,min最小score,max最大score,另外能夠經過weights設置不一樣的key的權重,交集時 score*weight
(1)ping:測定鏈接是否存活
(2)echo:在命令行打印一些內容
(3)select:選擇數據庫
(4)quit:退出鏈接
(5)dbsize:返回當前數據庫中key的數目
(6)info:獲取服務器的信息和統計
(7)monitor:實時轉儲收到的請求
(8)config get 配置項:獲取服務器配置的信息
config set 配置項 值:設置配置項信息
(9)flushdb:刪除當前選擇數據庫中全部的key
(10)flushall:刪除全部數據庫中的全部的key
(11)time:顯示服務器時間,時間戳(秒),微秒數
(12)bgrewriteaof:後臺保存rdb快照
(13)bgsave:後臺保存rdb快照
(14)save:保存rdb快照
(15)lastsave:上次保存時間
(16)shutdown [save/nosave]
注意:若是不當心運行了flushall,當即shutdown nosave,關閉服務器,而後手工編輯aof文件,去掉文件中的flushall相關行,而後開啓服務器,就能夠倒回原來是數據。若是flushall以後,系統剛好bgwriteaof了,那麼aof就清空了,數據丟失。
(17)showlog:顯示慢查詢
問:多慢才叫慢?
答:由slowlog-log-slower-than 10000,來指定(單位爲微秒)
問:服務器存儲多少條慢查詢記錄
答:由slowlog-max-len 128,來作限制