redis的特性:
1)內存存儲與持久化
2)5種數據類型
字符串:
hash:
鏈表:
集合:
有序集合:
3)Redis的多數據庫
1)Redis默認有16個數據庫,數據庫名分別爲:db0、db1 ... db15,redis不支持自定義數據庫名稱
2)能夠經過修改配置文件中的databases參數來修改默認數據庫的個數
3)客戶端鏈接到Redis服務後會自動選擇0號數據庫。注:能夠根據提示符看出目前客戶端是在操做哪一個數據庫。eg:127.0.0.1:6379>表示0數據庫,127.0.0.1:6379[1]>表示1數據庫。
4)經過SELECT命令能夠更換數據庫:eg:SELECT 1
注意:
1)Redis不支持自定義數據庫名稱,不支持爲每一個數據庫設置訪問密碼
2)Redis的多個數據庫之間不是徹底隔離的。
eg:FLUSHALL命令會清空全部數據庫的數據。
redis
通用命令:
type key # 獲取key的類型數據庫
String類型經常使用命令:app
set:
set key value # 插入key-value對
setnx key value # 若key不存在則插入鍵值對;若key已經存在,則不插入鍵值對,返回0。nx:not exist
setex key 有效期 value # 插入鍵值對並設置有效期(單位爲秒)
mset key1 value1 key2 value2 # 批量插入鍵值對,結果只有兩種:所有成功並返回ok或所有失敗並返回0
msetnx key1 value1 key2 value2 # 批量插入鍵值對,結果只有兩種:所有成功並返回ok或所有失敗並返回0,若是key1或key2已經存在,則插入所有失敗。
expire key n # 設置key對應的鍵值對的過時時間爲n秒
rename key1 key2 # 將key1重命名爲key2
del key # 刪除key對應的鍵值對
persist key # 刪除key的過時時間,使key對應的鍵值對永久存儲。
get:
get key # 獲取key對應的value
getset key value # 設置key對應的新值,並返回key對應的舊值
mget key1 key2 # 批量獲取多個key對應的值
key pattern # 獲取匹配pattern的全部key對應的值
strlen key # 獲取key對應的value的長度
exists key # 驗證key對應的鍵值對是否存在:1表示存在,0表示不存在
ttl key # 獲取key對應的鍵值對剩餘的生存時間(單位爲秒),ttl返回值:正數表示剩餘生存時間,-1表示沒有過時時間,永久存儲,-2表示數據已經被刪除。對象
其它:
incr key # 對key對應的value進行+1操做,若key不存在,則會將key對應的value設爲1,並存儲該鍵值對。若key對應的value的類型不是int類型,則會返回錯誤。
incrby key n # 對key對應的value進行+n操做,若是key不存在,則會將key對應的value設爲n,並儲存該鍵值對。
decr key # 對key對應的value進行-1操做,若是key不存在,則會講key對應的value設爲-1,並存儲該鍵值對。
decrby key n # 等價於incrby key -n
append key appendStr # 把appendStr追加到key對應的value的後面
setrange key 下標 替換的字符串
# 替換指定key對應的value從指定下標至最後的值
getrange key startIndex endIndex
# 獲取指定key對應的value的子串(包含startIndex和endIndex)
# 字符串左面下標是從0開始的, eg:獲取前3個字符 getrange key 0 2
# 字符串右邊下標是從-1開始的, eg:獲取最後3個字符 getrange key -3 -1
list(鏈表)類型經常使用命令:隊列
概念:list(鏈表)類型:每一個子元素都是String類型的雙向鏈表
push:
lpush key value # 在名稱爲key的鏈表 頭部(l表示left)添加字符串元素value
rpush key value # 在名稱爲key的鏈表 尾部(r表示right)添加字符串元素value
pop:
lpop key # 在名稱爲key的鏈表 頭部(l表示left)刪除一個元素,並返回刪除元素。若是鏈表key不存在或者爲空,則當即返回null。
rpop key # 在名稱爲key的鏈表 尾部(r表示right)刪除一個元素,並返回刪除元素,若是鏈表key不存在或者爲空,則當即返回null。
blpop key
brpop key
# 阻塞式(b表示block)的獲取鏈表中的元素
# 優勢:避免使用輪詢的方式來判斷隊列(鏈表)中是否有任務存在。
rpoplpush key1 key2
# 從名稱爲key1的鏈表的尾部移除一個元素,而且將這個元素添加到名稱爲key2的鏈表的頭部,並返回這個元素,整個操做是一個原子操做。
# 若是鏈表key1不存在,或者鏈表key1是一個空鏈表,則返回空。
其它:
llen key # 返回名稱爲key的鏈表的長度內存
lset key index value # 在名稱爲key的鏈表中,將(從左邊開始)第index元素的值設爲value,下標從0開始element
lindex key index # 返回名稱爲key的鏈表的第index個元素rem
lrange key index1 index2 # 獲取名稱爲key的鏈表中指定範圍的元素
linsert key before elementValue value # 在名稱爲key的鏈表的elementValue元素以前添加字符串元素value字符串
lrem key count value # 在名稱爲key的鏈表中,刪除count個和value相同的元素,count>0時,按從頭至尾的順序刪除,count=0時,刪除所有。
ltrim key index1 index2 # 在名稱爲key的鏈表中,保留index1到index2範圍內的數據
get
hash類型及操做
概念:redis中的hash是一個string類型的field和value的映射表。它的添加、刪除操做都是O(1),hash特別適合於存儲對象。
hset mapName key value # 往名稱爲mapName的map中添加key-value對,map若是不存在,則自動建立map。若是key-value對已存在,則更新。 hget mapName key # 獲取map中指定key的value hdel mapName key # 刪除map中指定的key-value hlen mapName # 獲取map的大小 hgetall key # 獲取map中全部的key-value對 set(集合)類型及操做: 概念: sadd key value # 向名稱爲key的集合中添加字符串元素value srem key value # 將名稱爲key的集合中的value元素刪除 smembers key # 獲取set中全部的元素