1. 程式人生 > >redis 之相關命令

redis 之相關命令

基本 結果 信息 基本上 keys 的區別 flushdb sdi 插入

為什麽緩存數據庫更要首選redis?如何使用redis?

一、使用緩存數據庫為什麽首選用redis?

我們都知道,把一些熱數據存到緩存中可以極大的提高速度,那麽問題來了,是用Redis好還是Memcached好呢,以下是它們兩者之間一些簡單的區別與比較:

1. Redis不僅支持簡單的k/v類型的數據,同時還支持list、set、zset(sorted set)、hash等數據結構的存儲,使得它擁有更廣闊的應用場景。

2. Redis最大的亮點是支持數據持久化,它在運行的時候可以將數據備份在磁盤中,斷電或重啟後,緩存數據可以再次加載到內存中,只要Redis配置的合理,基本上不會丟失數據。

3. Redis支持主從模式的應用。

4. Redis單個value的最大限制是1GB,而Memcached則只能保存1MB內的數據。

5. Memcache在並發場景下,能用cas保證一致性,而Redis事務支持比較弱,只能保證事務中的每個操作連續執行。

6. 性能方面,根據網友提供的測試,Redis在讀操作和寫操作上是略領先Memcached的。

從上面這些看出,Redis的優勢比Memcached大,不過Memcached也還是有它用武之地的。要是只選擇裝其中一種的話,還是要首選Redis。

二、如何使用redis?

你一定要知道的是:redis的key名要區分大小寫,在redis中除了 和空格外,其他的字符都可以做為key名,且長度不做限制,不過為了性能考慮,一般key名不要設置的太長。redis功能強大,支持數據類型豐富,以下是redis操作命令大全,基本上涵蓋了redis所有的命令!

1、redis命令基本篇

1)、【 set key value 】 存入一個key和值。如:set myname reson

2)、【 get key 】 讀取一個key的值。

3)、【 del key 】 刪除一個key。

4)、【 del key1 key2 ... keyN 】 刪除多個key。如:del myname1 myname2

5)、【 exists key 】 判斷一個key是否存在。

6)、【 type key 】 查看key的類型。

7)、【 rename key keyNew 】 重命名key名。如:rename myname myname2

8)、【 dbsize 】 查看當前庫中的key的條數。

9)、【 expire key time 】 指定key的過期時間,單位為秒。如:expire myname 9(設置9秒後過期)

10)、【 ttl key 】 查看redis有多長時間過期,單位為秒。

11)、【 keys * 】 列出當前庫中所有的key名。

12)、【 keys a* 】 列出當前庫中所有以字符串“a"開頭的key。

13)、【 select db-index 】 選擇一個數據庫,如選擇第一個數據庫:select 0;選擇第二個 select 1;默認有16個數據庫,這個值可以在redis.conf中配置。

14)、【 flushdb 】 清掉當前庫中所有的key(生產環境下需謹慎操作)。

15)、【 flushall 】 清掉所有庫中全部的key(生產環境下需謹慎操作)。

16)、【 mset key1 value1 key2 value2 ... keyN valueN 】 一次性存入多個key和值。

17)、【 mget key1 key2 ... keyN 】 一次性讀取多個key。

18)、【 incr key 】 可以對key類型+1的操作(相當於編程語言裏面的++),只能操作number型,操作字符串會報錯。可對新值進行操作。

19)、【 decr key 】 可以對key類型-1的操作(相當於編程語言裏面的--),只能操作number型,操作字符串會報錯。

20)、【 incrby key num 】 同incr,對key的值加num,比如 incrby aa 10,對aa+10。

21)、【 decrby key num 】 同上,對key的值減num。

22)、【 append key value 】 對指定key的字符串進行追加,如果key為整形,會被轉為字符串。如aa的值為9,執行append aa 10後,會變成910。

23)、【 substr key start end 】 對key進行截取start到end個字符。如aa的值為:abcdef,執行substr aa 2 3後,返回“cd”。

2、redis鏈表類型(list)命令

24)、【 lpush key value 】 往隊列頭部插入一個元素

25)、【 rpush key value 】 從尾部插入一個元素

26)、【 lpop key 】 從隊列頭部刪掉一個元素

27)、【 rpop key 】 從隊列尾部刪掉一個元素,並返回被刪除元素的值

28)、【 llen 】 返回隊列的長度,即裏面有多少個元素。不存在key返回0,不為隊列類型的key會返回報錯。

29)、【 lrange key start end 】 返回隊列從start到end之間的元素信息。

30)、【 ltrim key start end 】 截取一個隊列,只保留指定區間內的元素。

3、redis無序集合set類型命令

31)、【 sadd key vaule 】 往集合中插入一個元素,如果value值已存在集合中,則返回0,不會被重復插入。

32)、【 sinter key1 key2 ... keyN 】 取出n個key之間的交集。比如 key1裏面有值a,b,c,d,e,key2裏面有d,e,f,sinter key1 key2返回d,e。

33)、【 sunion key1 key2 ... keyN 】 取出n個key之間的並集。比如 key1裏面有值a,b,c,d,e,key2裏面有d,e,f,sunion key1 key2返回a,b,c,d,e,f。

34)、【 sdiff key1 key2 】 取出n個key之間的差集。比如 key1裏面有值a,b,c,d,e,key2裏面有d,e,f,sdiff key1 key2返回a,b,c;反過來sdiff key2 key1返回f。

35)、【 smembers key 】 返回key集合中所有的元素,結果是無序的。

36)、【 sismember key value 】 查看value這個值是否在key集合中。存在返回1,不存在返回0。

37)、【 scard key 】 返回集合中有多少個元素。

38)、【 smove key1 key2 value 】 把value從key1中移到key2中去。

39)、【 srem key value1 value2 ... valueN 】 從key集合中刪掉某些元素。

4、redis有序集合sorted set命令

40)、【 zadd key v k 】 往key中添加一個元素,k為鍵,v為值。如:zadd artHits 99 12表示id為12的文章點擊量為99次。

41)、【 zrange key start end 】 根據v的值由小到大進行排序來獲得start到end之間的元素。

註:0表示第一個元素,-1表示最後一個元素,-2表示倒數第二個元素,以此類推,如果要獲取第一個到倒數第三個之間的元素,命令為:zrange key 0 -3。

42)、【 zrevrange key start end 】 同上,根據v的值由大到小進行排序來獲得start到end之間的元素。可以輕松取出點擊量最高的前n篇文章。

43)、【 zremrangebyrank key start end 】 刪除集合中的元素。排序的方式為按照v由小到大的順序,如果要刪除key集合中的第一個值,則運行 zremrangebyrank artHits 0 0;刪除前3個值:zremrangebyrank artHits 0 2。

44)、【 zcard 】 返回key集合中元素的個數。

45)、【 zrank key k 】 返回值k在集合key中排第幾位,是按照v由小到大的順序。排第一名返回0,第二返回1,以此類推。

46)、【 zrevrank key k 】 同上,不同的是,按照v由大到小的順序。可以輕松取出點擊量最高的文章。

47)、【 zscore key k 】 取出集合key中鍵為k對應的值v。

48)、【 zrem key k 】 刪除集合中指定元素。

49)、【 zincrby key num k 】 給集合key中的元素k加上num,值針對整型。比如 zincrby artHits 3 12,給id為12的文章加上3個點擊量。此時zscore artHits 12的結果是99+3為102。

5、redis哈希hash類型命令

50)、【 hset key field value 】 設置hash field為指定值,如果key不存在,則先創建。

51)、【 hmset key field1 value1 ... fieldN valueN 】 同時設置多個值。

52)、【 hget key field 】 獲取指定的hash field

53)、【 hmget key field1 field1 ... fieldN 】 獲取指定的多個hash field

54)、【 hincrby key field num 】 將指定的hash field加上指定的值。

55)、【 hexists key field 】 查看指定field是否存在。

56)、【 hdel key field 】 刪除指定的hash field。

57)、【 hlen key 】 返回指定hash中field的數量。

58)、【 hkeys key 】 返回hash所有的field。

59)、【 hvals 】 返回hash中所有的value。

60)、【 hgetall key 】 返回hash中所有的field和value。

redis 之相關命令