Redis的五大數據類型
redis的五大數據類型是,String(字符串),Hash(哈希),List(列表),Set(集合),zset(sorted set: 有序集合)
string字符串
string是redis最基本的類型,一個key對應一個value
Str1 := "hello"
Str2 := "張三"
string是redis最基本的類型,一個key對應一個value
string類型是二進制安全的,除普通的字符串除外,也可以存放圖片等數據
redis中字符串value最大是512M
舉例: 存放一個地址信息
1127.0.0.1:6379> set address 北京
OK
127.0.0.1:6379> get address
"\xe5\x8c\x97\xe4\xba\xac"
127.0.0.1:6379> del address
(integer) 1
127.0.0.1:6379> get address
(nil)
.0.1:6379> set address 北京
OK
127.0.0.1:6379> get address
"\xe5\x8c\x97\xe4\xba\xac"
redis存放帶生存時間的值
setex 鍵 秒 值
127.0.0.1:6379> setex mess01 10 hello,you //設置mess01 10s過期
OK
127.0.0.1:6379> get mess01
"hello,you"
127.0.0.1:6379> get mess01 //等待10秒后再獲取發現變成空值了
(nil)
redis一次設置多個鍵值
127.0.0.1:6379> mset worker01 tom worker02 scott
OK
127.0.0.1:6379> get worker01
"tom"
127.0.0.1:6379> get worker02
"scott"
127.0.0.1:6379> mget worker01 worker02
1) "tom"
2) "scott"
存儲hash值
redis hash是一個鍵值對集合
redis hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象
127.0.0.1:6379> hset user1 name "smith"
(integer) 1
127.0.0.1:6379> hset user1 age 30
(integer) 1
127.0.0.1:6379> hget user1 name
"smith"
127.0.0.1:6379> hget user1 age
"30"
127.0.0.1:6379> hgetall user1 //一次獲取所有信息
1) "name"
2) "smith"
3) "age"
4) "30"
127.0.0.1:6379> hmset user2 name jerry age 110 job "Go coder" //一次設置一個用戶所有信息
OK
127.0.0.1:6379> hmget user2 name age //一次獲取多個字段,可選字段
1) "jerry"
2) "110"
127.0.0.1:6379> hlen user2 //判斷對象有多少個字段
(integer) 3
127.0.0.1:6379> HEXISTS user2 age //判斷對象有無此字段
(integer) 1
redis中的list
127.0.0.1:6379> lpush city beijing shanghai tianjing //從list左邊添加
(integer) 3
127.0.0.1:6379> lrange city 0 -1
1) "tianjing"
2) "shanghai"
3) "beijing"
127.0.0.1:6379> rpush city suzhou //從list右邊邊添加
(integer) 4
127.0.0.1:6379> lrange city 0 -1
1) "tianjing"
2) "shanghai"
3) "beijing"
4) "suzhou" //因為從右邊添加的,所以suzhou出現在最后
127.0.0.1:6379> lrange city 0 1 //取第一個到第二個,包括第二個
1) "tianjing"
2) "shanghai"
127.0.0.1:6379> lrange city 0 -2 //取第一個到倒數第二個
1) "tianjing"
2) "shanghai"
3) "beijing"
127.0.0.1:6379> lpop city //左邊彈出一個數據
"tianjing"
127.0.0.1:6379> lrange city 0 -1
1) "shanghai"
2) "beijing"
3) "suzhou"
127.0.0.1:6379> rpop city //右邊彈出一個數據
"suzhou"
127.0.0.1:6379> lrange city 0 -1 //最右邊的數據沒了
1) "shanghai"
2) "beijing"
127.0.0.1:6379> del city //刪除鏈表
(integer) 1
127.0.0.1:6379> lrange city 0 -1
(empty list or set)
redis中的set
redis的set是string類型的無序集合
底層是HashTable數據結構,Set也是存放很多字符串元素,字符串元素是無序的,而且元素的值不能重復
127.0.0.1:6379> sadd emails tom@sohu.com jerry@qq.com //給set添加兩個元素
(integer) 2
127.0.0.1:6379> smembers emails //取出所有值
1) "tom@sohu.com"
2) "jerry@qq.com"
127.0.0.1:6379> sismember emails kk@163.com //判斷是不是集合的成員
(integer) 1
127.0.0.1:6379> sismember emails ff@qq.com
(integer) 0
127.0.0.1:6379> srem emails tom@sohu.com //刪除指定的值
(integer) 1
127.0.0.1:6379> smembers emails //可以看到tom被刪除了
1) "kk@163.com"
2) "yy@gmail.com"
3) "jerry@qq.com"