1. 程式人生 > >redis基本數據類型及命令

redis基本數據類型及命令

添加 rename setnx tab sort 個數 str members -1

一.key相關命令


redis本質上是key-value數據庫.所以key操作適用於redis的任何數據類型緩存.

1.exists key
判斷是否存在key,存在返回1,不存在返回0

2.del key1 key2...keyN
刪除指定key,返回刪除key的數目;返回0表示給定key不存在

3.type key
返回給定key的value類型;返回none表示不存在;String為字符類型,list為鏈表類型;set為無序集合類型;

4.keys pattern
返回匹配指定模式的所有key
example:
keys *
keys key*

5.expire key seconds
設置返回key過期時間;單位為秒

6.ttl key
返回key的剩余過期時間,單位為秒數;-1表示未設置過期時間或未設置秒數

7.randomkey
隨機返回當前庫中的一個key

8.rename oldkey newkey
重命名key;如果oldkey不存在,返回錯誤消息;如果newkey存在,則被覆蓋;

9.renamenx oldkey newkey
如果newkey存在,返回0,不會覆蓋newkey值;失敗返回錯誤消息

10.move key db-index
移動key到制定庫


二.String類型


string是二進制安全的,可以保存圖片視頻等;

相關命令

1.set key value

2.setnx key value
如果key存在不會覆蓋

3.get key

4.getset key value
獲取key的值,不存在以value設置;如果key不存在,返回nil

5.mget key1 key2 key3
一次獲取多個key的值

6.mset key1 value1 ... keyN valueN
一次設置多個key的值

7.msetnx key1 value1 ... keyN valueN
一次設置多個key的值,不覆蓋已存在的key

8.incr key
對應key值+1

9.decr key
對應key值-1

10.incrby key integer
對應key值+integer

11.decrby key integer
對應key值-integer


三.list鏈表類型


list數據類型是指key對應的value是一個雙向鏈表類型.

1.lpush key string
向key對應的list頭部添加字符串元素

2.rpush key string
尾部添加元素

3.llen key
返回key對應lists長度

4.lrange key start end
返回指定區間內list的元素(start~end),下標從0開始,-1表示倒數最後一個元素;不會刪除元素

5.ltrim key start end
截取指定區間內的元素,下標從0開始, 成功返回ok,失敗返回錯誤消息;會刪除元素

6.lset key index value
設置指定下標的值,下標從0開始,如果下標不存在,返回錯誤;

7.lrem key count value
從list的頭部(count整數)或尾部(count負數)刪除一定數量(count絕對值)的匹配value的元素

8.lpop key
從list頭部刪除一個元素並返回

9.rpop key
從list尾部刪除一個元素並返回

10.blpop key1...keyN timeout
從左到右掃描key1到key2,對第一個非空list進行lpop操作並返回;如果所有list都為空或不存在,阻塞timeout秒,timeout為0表示一直阻塞.阻塞時,如果其他client對key1到key2的任意一個key進行push操作,阻塞解除並返回;如果超時發生,返回nil

11.rlpop key1...keyN timeout
同brlpop,不同的是blpop是從頭部刪除,lpop是尾部刪除

*如果list中不存在元素,則這個key就會被刪除掉.
*list適合做消息隊列.

四.set類型

set類型是一種無序集合.

1.sadd key member
增加元素

2.srem key member
刪除元素

3.spop key
刪除並返回key中隨機的一個元素

4.srandmember key
返回key中隨機的一個元素,但是不刪除

5.smove srckey detkey member
將元素member從srckey集合移動到detkey集合,操作是原子性的.

6.scard key
返回key的元素個數

7.sismember key value
判斷元素是否存在,存在1,不存在0

8.smembers key
返回key中對應所有元素


*如果set中不存在元素,則這個key就會被刪除掉
*set中元素如果相同,則會被覆蓋;這是集合的特性


五.Sorted set類型(有序集合)


與set類型相似,都是string類型的集合,不同的是sorted set屬於有序集合.可以構建一個優先級的隊列

1.zadd key score member
添加元素member到集合,元素在集合中存在則更新對應的score

2.zrem key member
刪除元素member

3.zincrby key incr member
增加對應元素的score,將其加incr值,並重新排序,返回更新後的score

4.zrank key member
返回指定元素在集合中的排名(下標),從小到大排序

5.zrevrank key member
同上,從大到小排序

6.zrange key start end
返回指定區間的元素,按score從小到大排序

7.zrevrange key start end
同上,從大到小排序

8.zrangebyscore key min max
返回集合中score值在給定範圍內的元素

9.zcount key min max
返回集合中score值在給定範圍內的元素數量

10.zcard key
返回元素數量

11.zremrangebyrank key min max
刪除集合中排名在指定區間的元素

12.zremrangebyscore key min max
刪除集合中score在指定區間的元素

*具體應用排行榜中按頂貼次數排序

偽代碼:

a.初始化
zadd toprank 0 art_id_1
zadd toprank 0 art_id_2
zadd toprank 0 art_id_3

b.頂貼操作,如將art_id為3的文章頂貼一下
zincrby toprank 1 art_id_3

c.按頂貼從大到小排序(前10)
zrange toprank 0 9


六.Hash類型


hash類型的每個key對應一個HashTable,適合存儲對象,如用戶信息對象等;

1.hset key field value
設置key的field對應的value, 如果不存在設置,存在覆蓋

2.hget key field
獲取值

3.hmset key field1 value1 ... fieldN valueN
設置多個值

4.hmget key field1 ... fieldN
取多個值

5.hincrby key field1 integer
對key對應的field1增加interger值

6.hexists key field
判斷key中是否存在field

7.hdel key field
刪除key中對應的field字段

8.hlen key
返回key中對應的fields數目

9.hkeys key
返回對應的fields名稱

10.hvals key
返回key中對應所有fields的value

11.hgetall key
返回key中對應的全部的field和value

redis基本數據類型及命令