redis支持五種數據類型:
- string(字符串)
- hash(哈希)
- list(列表)
- set(集合)
- zset(sorted set:有序集合)
string(字符串)
string時redis最基本的類型,一個key對應一個value
string類型是二進制安全的,也就是redis可以包含任何數據。比如jpg圖片或者序列化的對象
string是redis最基本的數據類型,string類型的值最大能存儲512MB
127.0.0.1:6379> set runood 'william林濤' OK 127.0.0.1:6379> get runood william林濤 127.0.0.1:6379>
調用了redis的set和get命令。這裏面的鍵是runood,對應的值就是‘runood’
redis字符串命令:
1 |
set key value 設置指定key的值 |
2 |
get key 獲取指定key值 |
3 |
getrange key start end 返回key中字符串值的字節符 |
4 |
getset key value 將給定key的值設爲value,並返回key的舊值(old value) |
5 |
getbit key offset 對key所存儲的字符串值,獲取指定偏移量上的位(bit) |
6 |
mget key1[key2...] 獲取所有(一個或者多個)給定key的值 |
7 |
setbit key offset value 對key所存儲的字符串值,設置或清除指定偏移量上的位(bit) |
8 |
setex key seconds value 將值value關聯到key,並將key的過期時間設爲seconds(以秒位單位) |
9 |
setnx key value 只有key不存在時設置key的值 |
10 |
setrange key offset value 用value 參數賦寫給定key所存儲的字符串值,從偏移量offset開始 |
11 |
strlen key 返回key所存儲的字符串值的長度 |
12 |
mset key value [key value...] 同時設置一個或多個key-value對 |
13 |
msetnx key value [key value...] 同時設置一個或者多個key-value對,當且僅當所有給定key都不存在 |
14 |
psetex key milliseconds value 以毫秒位單位設置key的生存時間,而不是像setex命令那樣,以秒爲單位 |
15 |
incr key 將key中儲存的數字增量加一 |
16 |
incrby key increment 將key所存儲的值加上給定的增量值(increment) |
17 |
incrbyfloat key increment 將key所儲存的值加上給定的浮點增量值 |
18 |
desc key 將key中儲存的數字值減一 |
19 |
desrby key descrement key所儲存的值減去給定的減量值(descrement) |
20 |
append key value 如果key已經存在並且是一個字符串,append命令將指定的value追加到該key原來值(value)的末尾 |
hash(哈希)
redis hash是一個鍵值對集合
redis hash是一個string類型的field和value的映射表,hash適合用於存儲對象
當你再次使用之前使用過的runood的時候因爲你已經使用過了,所以需要先將之前的key刪掉
127.0.0.1:6379> del runood 1
127.0.0.1:6379> hmset runood field1 'hello' field2 'world' OK 127.0.0.1:6379> hget runood field1 hello 127.0.0.1:6379> hget runood field2 world 127.0.0.1:6379>
這裏面用到了redis的hmset和hget命令,hmset設置了兩個field=>value對,hget獲取相應的field對應的value
每個hash可以存儲 232 -1 鍵值對(40多億)。
redis hash命令
更多命令:https://redis.io/commands
list(列表)
redis列表是簡單的字符串列表,按照插入的順序排序。你可以選擇添加一個元素到列表的頭部(左邊)或者尾部(右邊)。
127.0.0.1:6379> del runood 1 127.0.0.1:6379> lpush runood redis 1 127.0.0.1:6379> lpush runood mongodb 2 127.0.0.1:6379> lpush runood mysql 3 127.0.0.1:6379> lrange runood 0 10 mysql mongodb redis 127.0.0.1:6379>
列表最多可存儲 232 - 1 元素 (4294967295, 每個列表可存儲40多億)。
redis列表命令:
Set(集合)
redis的set是string類型的無序集合
集合是通過哈希表實現的,所以添加,刪除,查找的複雜度都是O(1)
sadd命令
添加一個string元素到key對應的set集合中,成功就返回1,如果元素已經在集合中就返回0
sadd key member
127.0.0.1:6379> del runood 1 127.0.0.1:6379> sadd runood redis 1 127.0.0.1:6379> sadd runood mongodb 1 127.0.0.1:6379> sadd runood mysql 1 127.0.0.1:6379> sadd runood redis 0 127.0.0.1:6379> smembers runood mysql mongodb redis 127.0.0.1:6379>
在上面的例子中redis添加了兩次,但根據集合內元素的唯一性,第二次插入的元素將被忽略
集合中最大的成員數爲 232 - 1(4294967295, 每個集合可存儲40多億個成員)。
redis集合(Set)
zset(sorted set:有序集合)
redis zset和set一樣也是string類型元素的集合,且不允許重複的成員
不同的是每個元素都會關聯一個double類型的分數,redis正式通過分數來爲集合中的成員進行從小到大的排序
zset的成員是唯一的,但分數(score)卻可以重複
zadd命令:添加元素到集合,元素在集合中存在的話就更新對應的分數(score)
zadd key score member
127.0.0.1:6379> del runood 1 127.0.0.1:6379> zadd runood 0 redis 1 127.0.0.1:6379> zadd runood 0 mongodb 1 127.0.0.1:6379> zadd runood 0 mysql 1 127.0.0.1:6379> zadd runood 0 redis 0 127.0.0.1:6379> zrangebyscore runood 0 10 mongodb mysql redis 127.0.0.1:6379>
redis有序集合命令