Redis 基礎:Redis 數據類型

Redis 數據類型

Redis支持五種數據類型:string(字符串)、hash(哈希)、list(列表)、set(集合)及zset(sorted set:有序集合)。mysql

String(字符串)

string時redis最基本的類型,能夠理解爲與Memcached如出一轍的類型,一個key對應一個value。string類型時二進制安全的,意思是redis的string能夠包含任何數據,好比:jpg圖片或者序列化的對象。string類型是redis最基本的數據類型,一個key最大能存儲512M。redis

實例sql

> SET name "Hello"
OK
> GET name 
"Hello"

在以上實例中咱們使用了Redis的SET和GET命令,鍵爲name,對應的值爲"Hello",注意:一個鍵最大能存儲512M。mongodb

Redis 字符串命令安全

SET key value:設置指定key的值;
GET key:獲取指定key的值;
GETRANGE key start end:返回key中字符串的字串;
GETSET key value:將給定key的值設置爲value,並返回key的舊值(old value);
GETBIT key offset:對key所存儲的字符串值,獲取指定偏移量上的位(bit);
MGET key1[key2...]:獲取全部(一個或多個)給定key的值;
SETBIT key offset value:對key所存儲的字符串值,設置或清除指定偏移量上的位(bit);
SETEX key seconds value:將value關聯到key,並將key的過時時間設爲seconds(以秒爲單位);
SETNX key value:只有在key不存在時設置key的值;
SETRANGE key offset value:用value參數覆寫給定的key所存儲的字符串值,從偏移量offset開始;
STRLEN key:返回key所存儲的字符串值的長度;
MSET key value [key value ...]:同時設置一個或多個key-value對;
MSETMX key value [key value ...]:同時設置一個或多個key-value對,當且僅當全部給定key都不存在;
PSETEX key milliseconds value:這個命令和SETEX命令類似,但它以毫秒爲單位設置key的生存時間,而不是像SETEX命令那樣,以秒爲單位;
INCR key:將key中存儲的數字值增1;
INCRBY key increment:將key所存儲的值加上給定的增量值(increment);
INCRBYFLOAT key increment:將key所存儲的值加上給定的浮點增量值(increment);
DECR key:將key中存儲的數字值減1;
DECRBY key decrement:key所存儲的值減去給定的減量值(decrement);
APPEND key value:若是key已經存在而且是一個字符串,APPEND命令將指定的value追加到該key原來值(value)的末尾;

Hash(哈希)

Redis hash是一個鍵值對集合。Redis hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象。code

實例對象

> HMSET myhash name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000
OK
> HGETALL myhash
1) "name"
2) "redis tutorial"
3) "description"
4) "redis basic commands for caching"
5) "likes"
6) "20"
7) "visitors"
8) "23000"

實例中咱們使用Redis HMSET設置了redis的一些描述信息(name,description,likes,visitors)到哈希表的myhash中,每一個hash能夠存儲2**32-1鍵值對(40多億)。排序

Redis hash命令索引

HDEL key field1 [field2 ...]:刪除一個或多個哈希表字段;
HEXISTS key field:查看哈希表key中,指定的字段是否存在;
HGET key field:獲取存儲在哈希表中指定字段的值;
HGETALL key:獲取在哈希表中指定key的全部字段和值;
HINCRBY key field increment:爲哈希表key中的指定字段的整數值加上增量increment;
HINCRBYFLOAT key field increment:爲哈希表key中的指定字段的浮點數值加上增量increment;
HKEYS key:獲取全部哈希表中的字段;
HLEN key:獲取哈希表中字段的數量;
HMSET key field1 value1 [field2 value2]:同時將多個field-value(字段-值)對設置到哈希表key中;
HSET key field value:將哈希表key中的字段field的值設爲value;
HSETNX key field value:只有在字段field不存在時,設置哈希表字段的值;
HVALS key:獲取哈希表中全部值;
HSCAN key cursor[MATCH pattern][COUNT count];

List(列表)

Redis列表是簡單的字符串列表,按照插入順序排序。能夠添加一個元素到列表的頭部(左邊)或者尾部(右邊)。一個列表最多能夠包含2**32-1個元素(每一個列表超過40億個元素)。圖片

實例

> LPUSH mylist redis
(integer) 1
> LPUSH mylist mongodb
(integer) 2
> LPUSH mylist mysql
(integer) 3
> LRANGE mylist 0 10

1) "mysql"
2)"mongodb"
3)"redis"

在以上實例中咱們使用了LPUSH將三個值插入了名爲mylist的列表中。

Redis 列表命令

BLPOP key1[key2] timeout:移除並獲取列表中的第一個元素,若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止;
BRPOP key1[key2] timeout:移除並獲取列表中的最後一個元素,若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止;
BRPOPLPUSH source destination timeout:從列表中彈出一個值,將淌出的元素插入到另外一個列表中並返回它;若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止;
LINDEX key index:經過索引獲取列表中的元素;
LINSERT key BEFORE|AFTER pivot value:在列表的元素前或後插入元素;
LLEN key:獲取列表長度;
LPOP key:移除並獲取列表的第一個元素;
LPUSH key value1[value2]:將一個或多個值插入到列表頭部;
LPUSH key value:將一個值插入到已存在的列表頭部;
LRANGE key start stop:獲取列表範圍內的元素;
LREM key count value:移除列表元素;
LSET key index value:經過索引設置列表元素的值;
LREIM key start stop:對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間內的元素都將被刪除;
RPOP key:移除並獲取列表最後一個元素;
RPOPLPUSH source destination:移除列表的最後一個元素,並將該元素添加到另外一個列表並返回;
RPUSH key value1[value2]:在列表中添加一個或多個值;
RPUSHX key value:爲已存在的列表添加值;

Set(集合)

Redis的Set是String類型的無序集合,集合成員是惟一的,這就意味着集合中不能出現重複的數據。Redis中集合是經過哈希表實現的,因此添加、刪除、查找的複雜度都是O(1),集合中最多能夠包含2**32-1個元素(每一個列表超過40億個元素)。

實例

> SADD myset redis
(integer) 1
> SADD myset mongodb
(integer) 1
> SADD myset mysql
(integer) 1
> SADD myset mysql
(integer) 0
> SMEMBERS myset

1) "mysql"
2) "mongodb"
3) "redis"

在以上實例中咱們經過SADD命令向名爲myset的集合插入三個元素。

Redis 集合命令

SADD key member1[member2]:向集合添加一個或多個成員;
SCADD key:獲取集合的成員數;
SDIFF key1[key2]:返回給定全部集合的差集;
SDIFFSTORE destination key1[key2]:返回給定全部集合的差集並存儲在destination中;
SINTER key1[key2]:返回給定全部集合的交集;
SINTERSTORE destination key1[key2]:返回給定全部集合的交集並存儲在destination中;
SISMEMBER key member:判斷member元素是不是集合key的成員;
SMEMBERS key:返回集合中全部成員;
SMOVE source destination member:將member元素從source集合移動到destination集合;
SPOP key:移除並返回集合中的有個隨機元素;
SRANDMEMBER key [count]:返回集合中一個或多個成員;
SUNION key1[key2]:返回全部給定集合的並集;
SUNIONSTORE destination key1[key2]:將全部給定集合的並集存儲在destination集合中;
SSCAN key cursor [MATCH pattern][COUNT count]:迭代集合中的元素;

Sorted Set(有序集合)

Redis 有序集合和集合同樣也是string類型元素的集合,且不容許重複的成員。不一樣的是每一個元素都會關聯一個double類型的分數。redis正是經過分數來爲集合中的成員進行從小到大的排序。有序集合的成員是惟一的,但分數(score)去能夠重複。集合是經過哈希表實現的,因此添加、刪除、查找的複雜度都是O(1),集合中最多能夠包含2**32-1個元素(每一個列表超過40億個元素)。

實例

> ZADD mysset 1 redis
(integer) 1
> ZADD mysset 2 mongodb
(integer) 1
> ZADD mysset 3 mysql
(integer) 1
> ZADD mysset 3 mysql
(integer) 0
> ZADD mysset 4 mysql
(integer) 0
> ZRANGE mysset 0 10 WITHSCORES

1) "redis"
2) "1"
3) "mongodb"
4) "2"
5) "mysql"
6) "4"

在以上實例中咱們經過ZADD命令向redis的有序集合中添加了三個值並關聯上分數。

Redis 有序集合命令

ZADD key score1 member1[score2 member2]:向有序集合添加一個或多個成員,或者更新已存在成員的分數;
ZCARD key:獲取有序集合的成員數;
ZCOUNT key min max:計算在有序集合中指定區間分數的成員數;
ZINCRBY key increment member:有序集合中對指定成員的分數加上增量increment;
ZINTERSTORE destination numkeys key [key...]:計算給定的一個或多個有序集的交集並將結果存儲在新的有序集合key中;
ZLEXCOUNT key min max:在有序集合中計算指定區間內成員數量;
ZRANGE key start stop [WITHSCORES]:經過索引區間返回有序集合指定區間內的成員;
ZRANGEBYEX key min max[LIMIT offset count]:經過字典區間返回有序集合的成員;
ZRANGEBYSCORE key min max [WITHSCORES][LIMIT]:經過分數返回有序集合指定區間內的成員;
ZRANK key member:返回有序集合中指定成員的索引;
ZREM key member[member...]:移除有序集合中的一個或多個成員;
AREMRANGEBYEX key min max:移除有序集合中給定的字典區間的全部成員;
ZREMRANGEBYRANK key start stop:移除有序集合中給定的排名區間的全部成員;
ZREMRANGEBYSCORE key min max:移除有序集合中給定的分數區間的全部成員;
ZREVRANGEBYSCORE key max min[WITHSCORES]:返回有序集合中指定分數區間內的成員,分數從高到低排序;
ZREVRANK key member:返回有序集合中指定成員的排名,有序集合成員按分數值遞減(從大到小)排序;
ZSCORE key member:返回有序集合中成員的分數值;
ZUNIONSTORE destination numkeys key [key...]:計算給定的一個或多個有序集的並集,並存儲在新的key中;
ZSCAN key cursor[MATCH pattern][COUNT count]:迭代有序集合中的元素(包括元素成員和元素分值);
相關文章
相關標籤/搜索