Redis,定義、各資料型別增刪改查
1. 定義
Redis 是一個高效能的key-value資料庫,key是字串型別。 |
2.核心特點:
(1) 單程序: Redis的伺服器程式採用的是單程序模型來處理客戶端的請求。對讀寫時間的響 應是通過對epoll函式的包裝來做到的。 |
3.資料型別:
鍵的型別是字串 |
值的型別分為五種: 字串string,雜湊hash,列表list,無序集合set;有序集合zset |
1. string型別
(1)簡介
字串(string)是Redis最基本的型別,可以儲存String,Integer,Float型的資料,甚至是二進位制資料,一個字串最大容量是512M |
(2)set命令
set 鍵值 》如果鍵不存在,就是新增 》如果鍵存在,就是修改 (1)設值取值 set name zs set name lisi (2)設定過期時間 setex name2 3 wangwu (2) 設定多個鍵值對 mset key1 value1 key2 value2 key3 value3 (3) 追加值 append key value
|
(3) get命令
(1) 獲取單個值 get key1 (2) 獲取多個值 mget key1 key2 |
(3) del命令
(1) 刪除某個鍵 del key1 (2) 刪除多個鍵 del key1 key2 |
(4)keys命令(查詢鍵)
mset u1 aa u2 bb u3 cc keys * |
(5)exists命令(判斷鍵是否存在)
如果存在返回1,不存在返回0 exists key |
(6)type命令(檢視鍵對應值的型別)
type key |
(7)expire命令(設定鍵過期時間)
expire key seconds
案例: set name zz expire name 5 get name------------>(等一會兒..) get name |
(8)TTL 命令(檢視鍵有效時間)
TTL key 以秒為單位,返回給定 key 的剩餘生存時間(TTL, time to live)。
返回值: 當 key 不存在時,返回 -2 。 當 key 存在但沒有設定剩餘生存時間時,返回 -1 。 否則,以秒為單位,返回 key 的剩餘生存時間。 |
2.list型別
(1)簡介
(1)列表中的值(value)型別為字串; (2)字串List,底層實現上不是陣列,而是連結串列,也就是說在頭部和尾部插入一個新元素,其時間複雜度是常數級別的;其弊端是:元素定位比陣列慢 |
(2)新增
從左側插入值: lpush key value1 value2 從右側插入值: rpush key value1 value2 |
(3) 獲取
返回列表裡指定範圍內的值 (1) 索引從左側開始,第一個值的索引為0; (2) 索引可以是負數,表示從尾部開始計數,如-1表示最後一個值; (3) start,stop為要獲取值的索引。 語法:lrange key start stop
例如: (1)獲取列表所有值 lrange key 0 -1
(2)從第三個元素開始獲取到最後的值 lrange key 2 -1
實戰: lpush name 1 2 3 rpush name 4 5 6 lrange name 0 -1 lrange name 2 -1
|
(4)修改
設定指定索引位置的值 (1)索引從左側開始,第一個值的索引為0; (2)索引可以是負數,表示從尾部開始,-1代表最後一個值。 語法:lset key index value
實戰: lset name 1 aa lrange name 0 -1 |
(5)刪除
刪除指定值 (1) 將列表中前count次出現的值移除 (2) count>0:從頭往尾刪除 (3) count<0:從尾往頭刪除 (4) count=0:刪除所有值 語法:lrem key count value (1)實戰: rpush born2 0 1 2 3 4 5 0 1 2 1 0 1 0 2 3 4 1 0 1 1 2 (2)查詢列表 lrange born2 0 -1 (3)案例2:從鍵列表右側開始刪除1個2 lrem born2 -1 2 (4)查詢列表 lrange born2 0 -1 (5):從鍵列表左側開始刪除2個2 lrem born2 2 2 (6)查詢列表 lrange born2 0 -1
|
3.set型別
(1)簡介
字串Set,無序不可重複,是通過HashTable實現的。 |
(2)實戰
1.sadd:新增元素,格式是SADD KEY_NAME VALUE1..VALUEN |
127.0.0.1:0>sadd myset v1 |
2.smembers:獲取集合中所有元素,格式是SMEMBERS key |
127.0.0.1:0>smembers myset #查詢myset中的值有哪些 |
3.sismember:判斷元素是否在集合中,格式是SISMEMBER KEY VALUE |
127.0.0.1:0>sismember myset v1 |
4.srem:刪除元素,格式是SREM KEY MEMBER1..MEMBERN |
127.0.0.1:0>srem myset v1 127.0.0.1:0>srem myset v1 127.0.0.1:0>smembers myset |
5.scard:獲取集合中元素個數,格式是SCARD KEY_NAME |
127.0.0.1:0>scard myset |
6.spop:彈出元素,格式是SPOP key [count] |
127.0.0.1:0>spop myset 127.0.0.1:0>smembers myset |
7.smove:移動元素,格式是SMOVE SOURCE DESTINATION MEMBER |
sadd myset v1 v2 v3 smembers myset smove myset myset2 v3 smembers myset smembers myset2
|
4. Hash雜湊型別
(1)簡介
按Hash方式來存放字串 |
(2)實戰
案例: 127.0.0.1:0>hset myhash id 123 "1" "1"
案例: hmset myhash name 322 age 8
案例: 127.0.0.1:0>hgetall myhash 1) "id" 2) "123" 3) "name" 4) "321" 5) "age" 6) "8" 4.hget:獲取單個key的值,格式是HGET KEY_NAME FIELD_NAME 127.0.0.1:0>hget myhash name "321" 5.hmget:同時獲取多個值,格式是HMGET KEY_NAME FIELD1...FIELDN 案例: 127.0.0.1:0>hmget myhash id name age 1) "123" 2) "321" 3) "8" 6.hdel:刪除某個項,格式是HDEL KEY_NAME FIELD1.. FIELDN 127.0.0.1:0>hdel myhash id "1" 1) "name" 2) "321" 3) "age" 4) "8"
|
5.zset型別(有序集合)
(1)簡介
字串Set,有序且不可重複,根據Score來排序。 |
(2)實戰
1. zadd:新增元素,格式是ZADD KEY_NAME SCORE1 VALUE1.. SCOREN VALUEN,score和項可以是多對,score可以是整數,也可以是浮點數,還可以是+inf表示正無窮大,-inf表示負無窮大 案例: zadd myzset 10 v1 zadd myzset 10 v1 20 v2 30 v3 zadd myzset 9 v1 20 v2 30 v3 |
2. zrange:獲取索引區間內的元素,格式是ZRANGE key start stop [WITHSCORES] 案例: zrange myzset 0 -1 zrange myzset 0 -1 withscores |
3. zrangebyscore:獲取分數區間內的元素,格式是ZRANGEBYSCORE key min max [WITHSCORES] 案例: zrangebyscore myzset 0 20 #代表大於等於0,小於等於20 zrangebyscore myzset 0 (20 #代表大於等於0,小於20 zrangebyscore myzset 0 (20 withscores #代表大於等於0,小於20,帶分數 zrangebyscore myzset 20 +inf withscores #代表大於等於20,帶分數 zrangebyscore myzset (20 +inf withscores #代表大於20,帶分數 |
4. zrem:刪除元素,格式是ZREM key member [member ...] 案例: zrem myzset v1 v2 #刪除v1,v2 zrangebyscore myzset 0 +inf withscores #獲取所有的大於0的值和分數 |
5. zcard:獲取集合中元素個數,格式是ZCARD KEY_NAME 案例: zcard myzset |