05 redis(進階)
阿新 • • 發佈:2018-07-07
認識 key code 永久 服務 頻繁 list san scores
階段一、認識redis
1、什麽是redis
Redis是由意大利人Salvatore Sanfilippo(網名:antirez)開發的一款內存高速緩存數據庫。Redis全稱為:RemoteDictionary Server,該軟件使用C語言編寫,Redis是一個key-value存儲系統,它支持豐富的數據類型,如:string、list、set、zset(sorted set)、hash。
2、redis特點:
快速響應,數據量小
Redis以內存作為數據存儲介質,所以讀寫數據的效率極高,遠遠超過數據庫。
3、Redis應用場景:
因為Redis交換數據快,所以在服務器中常用來存儲一些需要頻繁調取的數據,這樣可以大大節省系統直接讀取磁盤來獲得數據的I/O開銷,更重要的是可以極大提升速度。將這種熱點數據存到Redis(內存)中,要用的時候,直接從內存取,極大的提高了速度和節約了服務器的開銷。
4、端口
mysql端口:3306
redis端口:6379
mongoDB端口:27017
階段二、認識五種類型
1、string字符串
2、list列表
3、hash哈希
4、set集合
5、sorted sets有序集合
階段三、五種類型的操作
進入redis
進入:redis-cli --raw
不能進入,就安裝:
sudo apt-get update
sudo apt-get install redis-server
1、string字符串
-
可以為整形、浮點型和字符串,統稱為元素
# 基本操作 # 設置 set key value 例:set name ‘zcm‘ # 獲取get key 例:get name # key是唯一的,不能用同一個key 不然就會覆蓋 ? # 查看過期時間 # -1 表示永久 -2 表示不存在 ttl key 例: ttl name ? # 設置過期時間 # expire key seconds 例: expire name 20 # 設置key的同時,設置過期時間 set key value ex seconds 例: set age 18 ex 20 或 setex key seconds value 例: setex sex 20 ‘nan‘ ? # 追加 # 給已有的value,再添加新的值append key value 例: append name love # get name ? # 設置/獲取多個 # 設置多個 string mset key value key value .. 例: mset username ‘lucky‘ password ‘123‘ # 獲取多個 mget key key key ... 例: mget username password ? # key操作 # 查看所有的key 例: keys * # 刪除 del key 例: del name # 查看key是否存在,存在返回 1,不存在返回 0 exists key # 查看key類型 type key ? # 運算 set num 1 # 自動識別,字符串裏面的 整數 # +1 incr key 例: incr num # -1 decr kye 例: decr num # +整數 incrby key increment 例: incrby num 50 # -整數 decrby key increment 例: decrby num 50
2、list 列表
實現隊列,元素不唯一,先入先出原則
# 設置 # lpush 左添加 (棧 先進後出) lpush key value # 例: lpush li 1 2 3 4 # rpush 右添加 (隊列 先進先出) rpush key value # 例: rpush li 1 2 3 4 ? # 查看 # lrange key start stop 例 查看所有 lrange li 0 -1 ? # 獲得list的元素個數 llen key 例: llen li ? # 查看位於 lindex 位置上的元素 lindex key index 例: lindex li 3 ? # 刪除 # 刪除左邊一個 lpop key 例:lpop li # 刪除右邊一個 rpop key 例:rpop li # 指定刪除 rpush my_list a a b b c d e e f # lrem key count value ? # count > 0 從左往右 刪除數量為count的value 例:lrem my_list 2 a # count = 0 刪除所有的 value 例:lrem my_list 0 b # count < 0 從右往左 刪除數量為count的value 例:lrem my_list -2 e
3、hash哈希
key : (field : value)
是一個string類型的field和value的映射表,特別適合用於存儲對象
hash的key必須是唯一的
# 設置 # hset key field value 例:user {name:lucky} hest user name lucky # 獲取 # hget key field 例:hget user name # 刪除 # hdel key field 例:hdel user name # 設置多個 # hmset key field value [field value] 例:user{name:lucky,age:18,sex:male} hmset user name lucky age 18 sex male # 獲取多個 # hmget key field field.. 例:hmget user name age sex # 獲取全部 field value # hgetall key 例:hgetall user # 獲取所有的 field # hkeys key 例:hkeys user # 獲取所有的 value # hvals key 例:hvals user # 獲取 field 的個數 # hlen key 例:hlen user # 獲取 field 的類型 # type key 例:type user
4、set集合
各不相同的元素
# 設置 # sadd key value [value] (唯一,無序) 例:sadd my_set a w c d w e # 獲取 # smembers key 例:smembers my_set # 刪除 # srem 指定刪除 srem key member 例:srem my_set c # spop 隨機刪除 spop key 例:spop my_set # 移動一個集合的值到另一個集合 # smove oldkey newkey member 例:smove my_set my_set2 b # 判斷集合存在某個值 # sismember key value 例:sismember my_set2 b # 交集 # sinter key1 key2 .. 例:sinter my_set my_set2 # 把 key1 key2 的交集合並到 newkey # sinterstore newkey key1 key2 例:sinterstore new_set my_set my_set2 # 並集 # sunion key1 key2 .. 例:sunion my_set my_set2 # 把 key1 key2 的並集合並到 newkey # sunionstore newkey key1 key2 例:sunionstore new_set2 my_set my_set2 # 差集 # sdiff key1 key2 例:sdiff my_set my_set2 # 把key1 key2 的差集合並到 newkey # sdiffstore newkey key1 key2 例:sdiffstore new_set3 my_set my_set2 # 獲得集合個數 # scard key 例:scard my_set # 隨機返回一個 # srandmember key 例:srandmember my_set
5、sorted set有序集合
# 設置 # zadd key score member (權,權重,順序) 例: zadd my_zset 1 ‘one‘ zadd my_zset 2 ‘two‘ zadd my_zset 3 ‘three‘ zadd my_zset 4 ‘four‘ zadd my_zset 5 ‘five‘ # 獲取 # zrange 正序 # zrange key start stop (withscores) 例:zrange my_zset 0 -1 # zrevrange 倒序 # zrevrange key start stop 例:zrevrange my_zset 0 -1 # 刪除 # zrem key member 例:zrem my_zset two # 索引 # zrank 正序 # zrank key member 例:zrank my_zset three # zrevrank 反序 # zrevrank key member 例:zrevank my_zset three # zcard 查看有序集合元素數 # zcard key 例:zcard my_zset # zrangebyscore 返回集合中 score 在給定區間的元素 # zrange my_zset 0 -1 withscores 返回全部元素 # zrangebyscore my_zset 2 3 withscores 返回了 score 在 2~3 區間的元素 # zcount 返回集合中 score 在給定區間的數量 # zcount key min max 例:zcount my_zset 2 3 # zscore 查看score值 # zscore key member 例:zscore my_zset one # zremrangebyrank 刪除集合中排名在給定區間的元素 # zrange my_zset 0 -1 withscores 刪除全部元素 # zremrangebyrank my_zset 1 3 # zremrangebyscore 刪除集合中 score 在給定區間的元素 # zrange my_zset 0 -1 withscores 刪除全部元素 # zremrangebyscore my_zset 1 2
05 redis(進階)