String是最簡單的類型,一個key對應一個value,string類型是二進制安全的。Redis的string能夠包含任何數據,好比jpg圖片或者序列化的對象。mysql
Set方法:設置key對應的值爲string類型的valueredis
例如:咱們添加一個name=lili的鍵值對sql
redis 127.0.0.1:6379> set name lili OK
Setnx:設置key對應的值爲string類型的value,若是key已經存在,返回0,nx是not exist的意思。安全
例如:咱們添加一個name=lili_new的鍵值對。bash
redis 127.0.0.1:6379> get name "lili" redis 127.0.0.1:6379> setnx name lili_new (integer) 0 redis 127.0.0.1:6379> get name "lili" redis 127.0.0.1:6379> setnx age 20 (integer) 1
Setex:設置key對應的值爲string類型的value,並指定此鍵值對應的有效期。app
例如:咱們添加一個haircolor=red的鍵值對,並指定有效期爲10秒測試
redis 127.0.0.1:6379> setex haircolor 10 red OK redis 127.0.0.1:6379> get haircolor "red" redis 127.0.0.1:6379> get haircolor (nil)
nil:表示空spa
Setrange:設置指定key的value值的子字符串.net
例如:咱們但願將lili的126郵箱替換爲gmail郵箱code
redis 127.0.0.1:6379> get name "lili@126.com" redis 127.0.0.1:6379> setrange name 6 gmail.com (integer) 14 redis 127.0.0.1:6379> get name "lili@gmail.com" redis 127.0.0.1:6379> set email lijie@lampbrother.net OK redis 127.0.0.1:6379> get email "lijie@lampbrother.net" redis 127.0.0.1:6379> setrange email 6-li-jie.me (integer) 21 redis 127.0.0.1:6379> get email "lijie@li-jie.meer.net"
mset:一次設置多個key的值,成功返回ok表示全部的值都設置了,失敗返回0表示沒有任何值被設置。
redis 127.0.0.1:6379> mset key1 lijie1 key2 lijie2 OK redis 127.0.0.1:6379> get key1 "lijie1" redis 127.0.0.1:6379> get key2 "lijie2"
msetnx:一次設置多個key的值,成功返回ok表示全部的值都設置了,失敗返回0表示沒有任何值被設置,可是不會覆蓋已經存在的key。
1. redis 127.0.0.1:6379> msetnx key3 lijie3 key2 30 2. (integer) 0 3. redis 127.0.0.1:6379> get key3 4. (nil) 5. redis 127.0.0.1:6379> msetnx key3 lijie3 key4 30 6. (integer) 1 7. redis 127.0.0.1:6379> get key3 8. "lijie3" 9. redis 127.0.0.1:6379> get key4 10. "30"
get:獲取key對應的string值,若是key不存在返回nil。
getset:設置key的值,並返回key的舊值。
1. redis 127.0.0.1:6379> getset key4 40 2. "30" 3. redis 127.0.0.1:6379> get key4 4. "40"
getrange:獲取key的value值的子字符串。
1. redis 127.0.0.1:6379> get email 2. "lijie@li-jie.meer.net" 3. redis 127.0.0.1:6379> getrange email 0 4 4. "lijie"
mget:一次獲取多個key的值,若是對應key不存在則對應返回nil。
1. redis 127.0.0.1:6379> mget key1 key2 key3 2. 1) lijie1 3. 2) lijie2 4. 3) lijie3
incr:對key的值作加加操做,並返回新的值。
1. redis 127.0.0.1:6379> incr key4 2. (integer) 41 3. redis 127.0.0.1:6379> incr key4 4. (integer) 42 5. redis 127.0.0.1:6379> get key4 6. "42" 7. 8. redis 127.0.0.1:6379> incr key7 9. (integer) 1 10. redis 127.0.0.1:6379> incr key7 11. (integer) 2 12. redis 127.0.0.1:6379> get key7 13. "2"
incrby:同incr相似,加指定值,key不存在時候會設置key,並認爲原來的value是0。
1. redis 127.0.0.1:6379> incrby key4 5 2. (integer) 47 3. redis 127.0.0.1:6379> get key4 4. "47" 5. redis 127.0.0.1:6379> incrby key4 -5 6. (integer) 42 7. redis 127.0.0.1:6379> get key4 8. "42"
decr:對key的值作減減操做。
decrby:同decr相似,減指定值。
1. redis 127.0.0.1:6379> get key6 2. "39" 3. redis 127.0.0.1:6379> decr key6 4. (integer) 38 5. redis 127.0.0.1:6379> decrby key6 -3 6. (integer) 41 7. redis 127.0.0.1:6379> decrby key6 3 8. (integer) 38
append:給指定key的字符串追加value,返回新字符串值的長度。
1. redis 127.0.0.1:6379> get name 2. "test" 3. redis 127.0.0.1:6379> append name .net 4. (integer) 8 5. redis 127.0.0.1:6379> get name 6. "test.net"
strlen:取指定key的value值的長度。
1. redis 127.0.0.1:6379> strlen name 2. (integer) 8
Redis hash是一個string類型的field和value的映射表。它的添加、刪除操做都是0(1)(平均)。hash特別適合用於存儲對象。相較於將對象的每一個字段存成單個string類型。將一個對象存儲在hash類型中會佔用更少的內存,而且能夠更方便的存取整個對象。
hset:設置hash field爲指定值,若是key不存在,則先建立。
1. redis 127.0.0.1:6379> hset user:001 name lijie 2. (integer) 1 3. redis 127.0.0.1:6379> hget user:001 name 4. "lijie"
hsetnx:設置hash field爲指定值,若是key不存在,則先建立。若是存在返回0。
1. redis 127.0.0.1:6379> hsetnx user:002 name lamp 2. (integer) 1 3. redis 127.0.0.1:6379> hget user:002 name 4. "lamp" 5. redis 127.0.0.1:6379> hsetnx user:002 name lampbrother 6. (integer) 0 7. redis 127.0.0.1:6379> hget user:002 name 8. "lamp"
hmset:同時設置hash的多個field。
1. redis 127.0.0.1:6379> hmset user:003 name lijie age 20 sex 1 2. OK 3. redis 127.0.0.1:6379> hget user:003 name 4. "lijie" 5. redis 127.0.0.1:6379> hget user:003 age 6. "20" 7. redis 127.0.0.1:6379> hget user:003 sex 8. "1"
hget:獲取指定的hash field。
hmget:獲取所有指定的hash field。
1. redis 127.0.0.1:6379> hmget user:003 name age sex 2. 1) "lijie" 3. 2) "20" 4. 3) "1"
hincrby:指定的hash field加上給定值。
1. redis 127.0.0.1:6379> hincrby user:003 age 5 2. (integer) 25 3. redis 127.0.0.1:6379> hget user:003 age 4. "25"
hexists:測試指定field是否存在。
1. redis 127.0.0.1:6379> hexists user:003 age 2. (integer) 1 3. redis 127.0.0.1:6379> hexists user:001 sex 4. (ingeger) 0
hlen:返回指定hash的field數量
1. redis 127.0.0.1:6379> hlen user:001 2. (integer) 1 3. redis 127.0.0.1:6379> hlen user:003 4. (integer) 3
hdel:刪除指定hash的field
1. redis 127.0.0.1:6379> hget user:003 age 2. "25" 3. redis 127.0.0.1:6379> hdel user:003 age 4. (integer) 1 5. redis 127.0.0.1:6379> hget user:003 age 6. (nil)
hkeys:返回hash的全部field
1. redis 127.0.0.1:6379> hkeys user:001 2. 1) "name" 3. redis 127.0.0.1:6379> hkeys user:003 4. 1) "name" 5. 2) "sex"
hvals:返回hash的全部value
1. redis 127.0.0.1:6379> hvals user:003 2. 1) "lijie" 3. 2) "1"
hgetall:獲取某個hash中所有的field及value
1. redis 127.0.0.1:6379> hgetall user:003 2. 1) "name" 3. 2) "lijie" 4. 3) "sex" 5. 4) "1"
List是一個鏈表結構,主要功能是push、pop、獲取一個範圍的全部值等等,操做key理解爲鏈表的名字。Redis的list類型其實就是一個每一個子元素都是string類型的雙向鏈表。咱們能夠經過push、pop操做從鏈表的頭部或者尾部添加刪除元素,這樣list既能夠做爲棧,又能夠做爲隊列。
lpush:在key對應list的頭部添加字符串元素。
1. redis 127.0.0.1:6379> lpush mylist "world" 2. (integer) 1 3. redis 127.0.0.1:6379> lpush mylist "hello" 4. (integer) 2 5. redis 127.0.0.1:6379> lrange mylist 0 -1 6. 1) "hello" 7. 2) "world"
0表明頭部第一個元素,-1表明尾部第一個元素。lrange mylist 0 -1表示從list中頭第一個元素一直到尾第一個元素依次取出來,即第一個元素取到最後一個元素。
rpush:在key對應list的尾部添加字符串元素。
1. redis 127.0.0.1:6379> rpush mylist2 "world" 2. (integer) 1 3. redis 127.0.0.1:6379> rpush mylist2 "hello" 4. (integer) 2 5. redis 127.0.0.1:6379> lrange mylist2 0 -1 6. 1) "world" 7. 2) "hello"
linsert:在key對應list的特定位置前或後添加字符串
1. redis 127.0.0.1:6379> rpush mylist3 "world" 2. (integer) 1 3. redis 127.0.0.1:6379> linsert mylist3 before "world "hello" 4. (integer) 2 5. redis 127.0.0.1:6379> lrange mylist3 0 -1 6. 1) "hello" 7. 2) "world"
lset:設置list中指定下標的元素值
1. redis 127.0.0.1:6379> rpush mylist4 "hello" 2. (integer) 1 3. redis 127.0.0.1:6379> lset mylist4 0 "world" 4. OK 5. redis 127.0.0.1:6379> lrange mylist4 0 -1 6. 1) "world"
lrem:從key對應list中刪除n個和value相同的元素(n<0從尾刪除,n=0所有刪除)。
1. redis 127.0.0.1:6379> rpush mylist5 "hello" 2. (integer) 1 3. redis 127.0.0.1:6379> rpush mylist5 "hello" 4. (integer) 2 5. redis 127.0.0.1:6379> lrem mylist5 1 "hello" //從mylist5中刪除1個和hello相同的元素 6. (integer) 1 //表明刪除元素的個數
ltrim:保留指定key的值範圍內的數據
1. redis 127.0.0.1:6379> rpush mylist8 "one" 2. (integer) 1 3. redis 127.0.0.1:6379> rpush mylist8 "two" 4. (integer) 2 5. redis 127.0.0.1:6379> ltrim mylist8 1 -1 6. (integer) 1 7. redis 127.0.0.1:6379> lrange mylist8 0 -1 8. 1) "two"
lpop:從list的頭部刪除元素,並返回刪除元素
1. redis 127.0.0.1:6379> lrange mylist 0 -1 2. 1) "hello" 3. 2) "world" 4. redis 127.0.0.1:6379> lpop mylist 5. "hello" 6. redis 127.0.0.1:6379> lrange mylist 0 -1 7. 1) "world"
rpop:從list的尾部刪除元素,並返回刪除元素
1. redis 127.0.0.1:6379> lrange mylist2 0 -1 2. 1) "hello" 3. 2) "world" 4. redis 127.0.0.1:6379> rpop mylist2 5. "world" 6. redis 127.0.0.1:6379> lrange mylist2 0 -1 7. 1) "hello"
lists類型
rpoplpush:從第一個list的尾部移除元素並添加到第二個list的頭部。
1. redis 127.0.0.1:6379> lrange mylist5 0 -1 2. 1) "three" 3. 2) "hello" 4. redis 127.0.0.1:6379> lrange mylist6 0 -1 5. 1) "hello" 6. 2) "foo" 7. redis 127.0.0.1:6379> rpoplpush mylist5 mylist6 8. "hello" 9. redis 127.0.0.1:6379> lrange mylist5 0 -1 10. 1) "three" 11. redis 127.0.0.1:6379> lrange mylist6 0 -1 12. 1) "hello" 13. 2) "hello" 14. 3) "foo"
lindex:返回名稱爲key的list中index位置的元素。
1. redis 127.0.0.1:6379> lrange mylist5 0 -1 2. 1) "three" 3. 2) "foo" 4. redis 127.0.0.1:6379> lindex mylist5 0 5. "three" 6. redis 127.0.0.1:6379> lindex mylist5 1 7. "foo"
llen:返回key對應list的長度
1. redis 127.0.0.1:6379> lrange mylist6 0 -1 2. 1) "hello" 3. 2) "hello" 4. 3) "foo" 5. redis 127.0.0.1:6379> llen mylist6 6. (integer) 3
Set是集合,它是string類型的無序集合。set是經過hash table實現的,添加、刪除和查找的複雜度都是O(1)。對集合咱們能夠取並集、交集、差集。經過這些操做咱們能夠實現sns中的好友推薦和blog的tag功能。
sadd:向名稱爲key的set中添加元素。
1. redis 127.0.0.1:6379> sadd myset "hello" 2. (integer) 1 //表示添加成功 3. redis 127.0.0.1:6379> sadd myset "world" 4. (integer) 1 //表示添加成功 5. redis 127.0.0.1:6379> sadd myset "world" 6. (integer) 0 //表示添加不成功 7. redis 127.0.0.1:6379> smembers myset 8. 1) "world" 9. 2) "hello"
srem:刪除名稱爲key的set中的元素。
1. redis 127.0.0.1:6379> sadd myset2 one 2. (integer) 1 3. redis 127.0.0.1:6379> sadd myset2 two 4. (integer) 1 5. redis 127.0.0.1:6379> sadd myset2 three 6. (integer) 1 7. redis 127.0.0.1:6379> smembers myset2 8. 1) "three" 9. 2) "two" 10. 3) "one" 11. redis 127.0.0.1:6379> srem myset2 two 12. (integer) 1 13. redis 127.0.0.1:6379> srem myset2 two 14. (integer) 0 15. redis 127.0.0.1:6379> smembers myset2 16. 1) "three" 17. 2) "one"
spop:隨機返回並刪除名稱爲key的set中一個元素。
1. redis 127.0.0.1:6379> sadd myset3 one 2. (integer) 1 3. redis 127.0.0.1:6379> sadd myset3 two 4. (integer) 1 5. redis 127.0.0.1:6379> sadd myset3 three 6. (integer) 1 7. redis 127.0.0.1:6379> sadd myset3 four 8. (integer) 1 9. redis 127.0.0.1:6379> sadd myset3 five 10. (integer) 1 11. redis 127.0.0.1:6379> smembers myset3 12. 1) "four" 13. 2) "three" 14. 3) "two" 15. 4) "one" 16. 5) "five" 17. redis 127.0.0.1:6379> spop myset3 18. "one" 19. redis 127.0.0.1:6379> spop myset3 20. "four" 21. redis 127.0.0.1:6379> spop myset3 22. "three" 23. redis 127.0.0.1:6379> smembers myset3 24. 1) "two" 25. 2) "five"
sdiff:返回全部給定key與第一個key的差集。
1. redis 127.0.0.1:6379> smembers myset2 2. 1) "three" 3. 2) "two" 4. redis 127.0.0.1:6379> smembers myset3 5. 1) "two" 6. 2) "one" 7. redis 127.0.0.1:6379> sdiff myset2 myset3 8. 1) "three"
sdiffstore:返回全部給定key與第一個key的差集,並將結果存爲另外一個key。
1. redis 127.0.0.1:6379> smembers myset2 2. 1) "three" 3. 2) "two" 4. redis 127.0.0.1:6379> smembers myset3 5. 1) "two" 6. 2) "one" 7. redis 127.0.0.1:6379> sdiffstore myset4 myset2 myset3 8. (integer) 1 9. redis 127.0.0.1:6379> smembers myset4 10. 1) "three"
sinter:返回全部給定key的交集。
1. redis 127.0.0.1:6379> smembers myset2 2. 1) "three" 3. 2) "two" 4. redis 127.0.0.1:6379> smembers myset3 5. 1) "two" 6. 2) "one" 7. redis 127.0.0.1:6379> sinter myset2 myset3 8. 1) "two"
sinterstore:返回全部給定key的交集,並將結果存爲另外一個key。
1. redis 127.0.0.1:6379> smembers myset2 2. 1) "three" 3. 2) "two" 4. redis 127.0.0.1:6379> smembers myset3 5. 1) "two" 6. 2) "one" 7. redis 127.0.0.1:6379> sinterstore myset6 myset2 myset3 8. (integer) 1 9. redis 127.0.0.1:6379> smembers myset6 10. 1) "two"
sunion:返回全部給定key的並集。
1. redis 127.0.0.1:6379> smembers myset2 2. 1) "three" 3. 2) "two" 4. redis 127.0.0.1:6379> smembers myset3 5. 1) "two" 6. 2) "one" 7. redis 127.0.0.1:6379> sunion myset2 myset3 8. 1) "three" 9. 2) "one" 10. 3) "two"
sunionstore:返回全部給定key的並集。
1. redis 127.0.0.1:6379> smembers myset2 2. 1) "three" 3. 2) "two" 4. redis 127.0.0.1:6379> smembers myset3 5. 1) "two" 6. 2) "one" 7. redis 127.0.0.1:6379> sunionstore myset7 myset2 myset3 8. (integer) 3 9. redis 127.0.0.1:6379> smembers myset7 10. 1) "three" 11. 2) "one" 12. 3) "two"
smove:從第一個key對應的set中移除member並添加到第二個對應的set中。
1. redis 127.0.0.1:6379> smembers myset2 2. 1) "three" 3. 2) "two" 4. redis 127.0.0.1:6379> smembers myset3 5. 1) "two" 6. 2) "one" 7. redis 127.0.0.1:6379> smove myset2 myset7 three 8. (integer) 1 9. redis 127.0.0.1:6379> smembers myset2 10. 1) "two" 11. redis 127.0.0.1:6379> smembers myset3 12. 1) "two" 13. 2) "one" 14. 3) "three"
scard:返回名稱爲key的set的元素個數。
1. redis 127.0.0.1:6379> scard myset3 2. (integer) 3
sismember:測試member是不是名稱爲key的set的元素。
1. redis 127.0.0.1:6379> smembers myset2 2. 1) "two" 3. redis 127.0.0.1:6379> sismember myset2 two 4. (integer) 1 5. redis 127.0.0.1:6379> sismember myset2 one 6. (integer) 0
srandmember:隨機返回名稱爲key的set的一個元素,但不刪除元素。
1. redis 127.0.0.1:6379> smembers myset3 2. 1) "two" 3. 2) "one" 4. redis 127.0.0.1:6379> srandmember myset3 5. "two" 6. redis 127.0.0.1:6379> srandmember myset3 7. "one"
sorted set是set的一個升級版本,它在set的基礎上增長了一個順序屬性,這一屬性在添加修改元素的時候能夠指定,每次指定後,zset會自動從新按新的值調整順序。能夠理解爲有兩列的mysql表,一列存value,一列存順序。操做中key理解爲zset的名字。
zadd:向名稱爲key的zset中添加元素member,score用於排序。若是該元素存在,則更新其順序。
1. redis 127.0.0.1:6379> zadd myzset 1 "one" 2. (integer) 1 3. redis 127.0.0.1:6379> zadd myzset 2 "two" 4. (integer) 1 5. redis 127.0.0.1:6379> zadd myzset 3 "two" 6. (integer) 0 7. redis 127.0.0.1:6379> zrange myzset 0 -1 withscores 8. 1) "one" 9. 2) "1" 10. 3) "two" 11. 4) "3"
zrem:刪除名稱爲key的zset中的元素member
1. redis 127.0.0.1:6379> zrange myzset 0 -1 withscores 2. 1) "one" 3. 2) "1" 4. 3) "two" 5. 4) "3" 6. redis 127.0.0.1:6379> zrem myzset two 7. (integer) 1 8. redis 127.0.0.1:6379> zrange myzset 0 -1 withscores 9. 1) "one" 10. 2) "1"
zincrby:若是在名稱爲key的zset中已經存在元素member,則該元素的score增長increment,不然向該集合中添加該元素,其score的值爲increment。
1. redis 127.0.0.1:6379> zadd myzset2 1 "one" 2. (integer) 1 3. redis 127.0.0.1:6379> zadd myzset2 2 "two" 4. (integer) 1 5. redis 127.0.0.1:6379> zincrby myzset2 2 "one" 6. "3" //表明one的順序號變成了3 7. redis 127.0.0.1:6379> zrange myzset2 0 -1 withscores 8. 1) "two" 9. 2) "2" 10. 3) "one" 11. 4) "3"
zrank:返回名稱爲key的zset中member元素的排名(按score從小到大排序)即下標。
1. redis 127.0.0.1:6379> zrange myzset3 0 -1 withscores 2. 1) "one" 3. 2) "1" 4. 3) "two" 5. 4) "2" 6. 5) "three" 7. 6) "3" 8. 7) "five" 9. 8) "5" 10. redis 127.0.0.1:6379> zrank myzset3 two 11. (integer) 1 //two的下標是1(從0開始)
zrevrank:返回名稱爲key的zset中member元素的排名(按score從大到小排序)即下標。
1. redis 127.0.0.1:6379> zrange myzset3 0 -1 withscores 2. 1) "one" 3. 2) "1" 4. 3) "two" 5. 4) "2" 6. 5) "three" 7. 6) "3" 8. 7) "five" 9. 8) "5" 10. redis 127.0.0.1:6379> zrevrank myzset3 two 11. (integer) 2
zrevrange:返回名稱爲key的zset(按score從大到小順序)中的index從start到end的全部元素。
1. redis 127.0.0.1:6379> zrevrange myzset3 0 -1 withscores 2. 1) "five" 3. 2) "5" 4. 3) "three" 5. 4) "3" 6. 5) "two" 7. 6) "2" 8. 7) "one" 9. 8) "1"
zrangebyscore:返回集合中score在給定區間的元素。
1. redis 127.0.0.1:6379> zrange myzset3 0 -1 withscores 2. 1) "one" 3. 2) "1" 4. 3) "two" 5. 4) "2" 6. 5) "three" 7. 6) "3" 8. redis 127.0.0.1:6379> zrangebyscore myzset3 2 3 withscores 9. 1) "two" 10. 2) "2" 11. 3) "three" 12. 4) "3"
zcount:返回集合中score在給定區間的數量。
1. redis 127.0.0.1:6379> zrange myzset3 0 -1 withscores 2. 1) "one" 3. 2) "1" 4. 3) "two" 5. 4) "2" 6. 5) "three" 7. 6) "3" 8. 7) "five" 9. 8) "5" 10. redis 127.0.0.1:6379> zcount myzset3 2 3 11. (integer) 2
zcard:返回集合中的元素個數。
1. redis 127.0.0.1:6379> zrange myzset3 0 -1 withscores 2. 1) "one" 3. 2) "1" 4. 3) "two" 5. 4) "2" 6. 5) "three" 7. 6) "3" 8. 7) "five" 9. 8) "5" 10. redis 127.0.0.1:6379> zcard myzset3 11. (integer) 4
zremrangebyrank:刪除集合中排名在給定區間的元素。
1. redis 127.0.0.1:6379> zrange myzset3 0 -1 withscores 2. 1) "one" 3. 2) "1" 4. 3) "two" 5. 4) "2" 6. redis 127.0.0.1:6379> zremrangebyrank myzset3 1 1 7. (integer) 1 //只刪除一個 8. redis 127.0.0.1:6379> zrange myzset3 0 -1 withscores 9. 1) "one" 10. 2) "1"
zremrangebyscore:刪除集合中score在給定區間的元素。
1. redis 127.0.0.1:6379> zrange myzset3 0 -1 withscores 2. 1) "one" 3. 2) "1" 4. 3) "two" 5. 4) "2" 6. 5) "three" 7. 6) "3" 8. redis 127.0.0.1:6379> zremrangebyscore myzset3 1 2 9. (integer) 2 //刪除順序爲1和2的 10. redis 127.0.0.1:6379> zrange myzset3 0 -1 withscores 11. 1) "three" 12. 2) "3"