Redis支持五種數據類型:string(字符串)、hash(哈希)、list(列表)、set(集合)及zset(sorted set:有序集合)。mysql
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)的末尾;
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];
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:爲已存在的列表添加值;
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]:迭代集合中的元素;
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]:迭代有序集合中的元素(包括元素成員和元素分值);