今天給你們分享的是Redis,若有不足之處,敬請指正,那麼什麼是Redis呢?redis
Redis是一個開源的,使用ANSI C 編寫,高性能的Key-Value的NoSQL數據庫數據庫
前面咱們說到Redis的數據模型爲鍵值對形式。接下來咱們來分析Redis的鍵key。緩存
redis的key 值是二進制安全的,這意味着能夠用任何二進制序列做爲key值,從形如」foo」的簡單字符串到一個JPEG文件的內容均可以。 空字符串也是有效key值。安全
redis建議使用字符串作爲key的類型服務器
將以下數據庫表中的數據,轉換爲redis的key-value存儲。數據結構
id | username | password | |
---|---|---|---|
1 | lisi | 111111 | lisi@163.com |
OKapp
OK性能
OK測試
"user:id:1:password".net
"user:id:1:username"
"user:id:1:email"
命令 | 做用 |
---|---|
exists key | 檢查給定key是否存在。 |
del key | 刪除一個key |
del key1 key2 key3 | 刪除多個key |
keys pattern (模糊查找) | 查找全部符合給定模式 pattern 的 key |
expire key seconds | 指定key的過時時間。新添加的key,若是沒有指定過時時間,則會一直保存。能夠對一個已經帶有生存時間的key執行EXPIRE命令,新指定的生存時間會取代舊的生存時間。 |
ttl key | 查看某個key的剩餘過時時間,返回值:2 表示這個key已通過期返回1表示沒有設置過時時間 返回其它 表示剩餘的生存時間,單位爲秒。 |
rename | 語法格式:rename key newkey將 key 更名爲 newkey 。當 key 和 newkey 相同,或者 key 不存在時,返回一個錯誤。當 newkey 已經存在時, RENAME 命令將覆蓋舊值。 |
type key | 查看key對應的value的數據結構類型 |
其它key命令見redis幫助文檔 http://doc.redisfans.com/
string類型是redis最經常使用的數據結構類型,存儲的值爲字符串。
命令 | 做用 |
---|---|
set key value | 設置一個key,值爲value,類型爲String類型;若是這個key已經存在,則更新這個key的值。返回值1 表示成功0 表示失敗 |
get key | 獲取key對應的value值;若是key不存在,則返回nil |
mget key1 key2 | 一次獲取多個key的值,若是對應key不存在,則對應返回nil |
incr key | 將 key 中儲存的數字值增一,而後返回 |
decr key | 將 key 中儲存的數字值減一,而後返回,若是這個key不存在,那麼key的值會先被初始化爲0,而後再執行INCR操做。若是這個key對應的value值,不能表示數字,則會返回一個錯誤 |
decrby key decrement | 將key減小對應的步長值 |
append key value | 若是key已經存在,則將value追加到這個key原先的value值的末尾。若是這個key不存在,則執行set操做 |
Redis的key是單線程模式,這就意味一瞬間只有一個線程可以持有這個key,因此可使用redis解決部分涉及線程安全的業務。
圖示 |
---|
圖示 |
---|
命令 | 做用 |
---|---|
lpush key value [value ...] | 將一個或多個值value插入到列表key的表頭(即從左邊插入) 若是 key 不存在,一個空列表會被建立並執行 LPUSH 操做。當 key 存在但不是列表類型時,返回一個錯誤。 |
rpush key value [value ...] | 尾部添加(從右向左),操做同上 |
llen key | 返回key對應list的長度,key不存在返回0,若是key對應類型不是list返回錯誤 |
lindex key index | index元素在list列表中的下角標,從0開始;lindex 是從左到右取元素 |
lrange key start stop | 獲取指定區間的全部元素;下角標從0開始,0表示第一個元素,1表示第二個,依次類推;-1表示最後一個元素,-2表示倒數第二個元素,依次類推; |
lpop key | 移除並返回列表中的第一個元素 |
rpop key | 移除並返回列表中的最後一個元素 |
特色 |
---|
命令 | 做用 |
---|---|
hset key field value | 設置hash field爲指定值,若是key不存在,則先建立 若是field已經存在,那麼將更新這個field的值 |
hget key field | 獲取指定的hash field |
hmget key filed1....fieldN | 獲取所有指定的hash filed |
hmset key filed1 value1 ... filedN valueN | 同時設置hash的多個field |
hexists key field | 測試指定field是否存在 |
hdel key field | 刪除指定的hash field |
hlen key | 返回指定hash的field數量 |
hkeys key | 返回hash的全部field |
hvals key | 返回hash的全部value |
hgetall | 返回hash的全部filed和value |
節約內存空間
redis每建立一個鍵,都會爲這個鍵儲存一些附加的管理信息(好比這個鍵的類型,這個鍵最後一次被訪問的時間等等)
redis的key相對於值來講,更珍貴!!!
因此數據庫裏面的鍵越多,redis數據庫服務器在儲存附加管理信息方面耗費的內存就越多,在獲取key對應的value值時cpu的開銷也會更多
Hash結構能夠將具備關聯關係的一組key-value,存儲到同一個hash結構中,從而減小key的數量。
須要設置鍵過時功能的key: Redis的key的過時功能只能對鍵操做,而Hash結構不能單獨對某一個filed設置過時功能。
特色 |
---|
命令 | 做用 |
---|---|
sadd key member [member ...](無序不重複) | 將一個或多個 member 元素加入到集合 key 當中,已經存在於集合的 member 元素將被忽略 |
smembers key | 返回集合 key 中的全部成員。不存在的 key 被視爲空集合 |
spop key | 移除並返回集合中的一個隨機元素。被移除的隨機元素。當key不存在或key是空集時,返回nil |
scard key | 返回集合key的基數(集合中元素的數量)。集合的基數。當key不存在時,返回0 |
sinter key [key ...] 交集 | 返回一個集合的所有成員,該集合是全部給定集合的交集。不存在的 key 被視爲空集 |
sunion key [key ...] 並集 | 返回一個集合的所有成員,該集合是全部給定集合的並集。不存在的 key 被視爲空集 |
sdiff key [key ...] 差集 | 返回一個集合的所有成員,該集合是全部給定集合之間的差集。不存在的 key 被視爲空集 |
版權說明:歡迎以任何方式進行轉載,但請在轉載後註明出處!