Redis 的常用五大資料型別
2016-12-21 14:54:20
該系列文章連結
NoSQL 資料庫簡介
Redis的安裝及及一些雜項基礎知識
Redis 的常用五大資料型別(key,string,hash,list,set,zset)
Redis 配置檔案介紹
Redis 持久化之RDB
Redis 持久化之AOF
Redis 主從複製
Redis 事務
Redis 釋出與訂閱
Redis 相對其它型別的 NoSQL 資料庫而言,更出彩的一點就是有更多的資料型別共使用者選擇。
學習任意一門技術,都應該從官網入手,Redis官網(https://redis.io/),Redis 中文網(http://www.redis.cn/)(華為建立的)
本系列文章只講常用命令,對於完整命令及資訊可以翻閱
既然 Redis 屬於鍵值對型別資料庫,那麼接下來來看看獨屬於鍵的命令吧
一.key
1.keys pattern:在本資料庫中查詢對應某種格式的鍵
找到本資料庫中所有的鍵(* 代表1個或多個字元):keys *
2. 找到 study 名稱下所有的資料庫:keys study:*
3.exists key:判斷 key 鍵是否存在
查詢 study:string:k2 和 study:string:k4 鍵值是否存在:
4.move key db:將 key 鍵移到 db 資料庫中
5.type key:求出 key 鍵的型別
6.expire key seconds:設定 key 的過期時間
7.ttl key :查詢 key 的過期時間
二. string
string 是字串,key:value 鍵值對
string是redis最基本的型別,你可以理解成與Memcached一模一樣的型別,一個key對應一個value。
string型別是二進位制安全的。意思是redis的string可以包含任何資料。比如jpg圖片或者序列化的物件 。
string型別是Redis最基本的資料型別,一個redis中字串value最多可以是512M
1.set/get/append string_name value
incr/incrby decr/decrby
若是 value 僅是數字,則可以用 incr/incrby decr/decrby 對 value 做加減操作
2.strlen
求字串的長度
3.getrange/setrange
擷取總串中的部分字串
4.setex/setnx
setex:建立鍵值和過期時間
setnx:set if not exists
5.mset/mget/msetnx
對多個 string 進行操作
這張圖是關於三個命令的操作,以及一些特殊情況
mset key value [key]:若值已存在,則 value 覆蓋舊值,如果不希望的話,則使用 msetnx
msetnx:只會在所有給定 key 都不存在的情況下進行操作
6.getset
先取值再設定值
三.hash
Redis hash 是一個鍵值對集合。
Redis hash是一個string型別的field和value的對映表,hash特別適合用於儲存物件。
1.hset/hget/hmset/hmget/hgetall/hdel
2.hlen
同上
3.hexists
同上
4.hincrby/hincrbyfloat
5.hsetnx
四.list
Redis 列表是簡單的字串列表,按照插入順序排序。你可以新增一個元素導列表的頭部(左邊)或者尾部(右邊)。
它的底層實際是個連結串列
1.lpush/rpush/lrange/lpop/rpop
lpush 入 list,可以把 list 當作棧來用
rpush 入 lsit,可以把 list 當作佇列來用
2.llen/lindex
3.lrem
lrem key count value:刪除 key 中重複的值
4.ltrim
ltrim key begin end
5.rpoplpush
6.lset key index value
linsert key before/after value new_value
這兩個是在 list 中間插入的命令,效率很低,有興趣的可以自己試試
8.list 總結
它是一個字串連結串列,left、right都可以插入新增。
如果鍵不存在,建立新的連結串列;如果鍵已存在,新增內容;如果值全移除,對應的鍵也就消失了。
連結串列的操作無論是頭和尾效率都極高,但假如是對中間元素進行操作,效率就很差了。
五.set
Redis的Set是string型別的無序集合。它是通過HashTable實現實現的,
set 是一個集合,既然是集合,那麼就是無序,不可重複的。
1.sadd/srem/smembers/sismember
2.scard
3.srandmember
4.spop
5.smove
把 set1 中的元素 移到 set2 中
6.數學集合類
差集:sdiff
並集:sunion
交集:sinter
六.zset:sorted set
Redis zset 和 set 一樣也是string型別元素的集合,且不允許重複的成員。
不同的是每個元素都會關聯一個double型別的分數。
redis正是通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重複。
1.zadd/zrem/zscore
2.zcard/zcount
3.zrange//zrangbyscore/zrank
zrangebyscore 命令仔細使用一下
http://redisdoc.com/sorted_set/zrangebyscore.html
4.zrevrange/zrevrangebyscore/zrevrank
這個自己去寫寫看