1. 程式人生 > >05 redis(進階)

05 redis(進階)

認識 key code 永久 服務 頻繁 list san scores

redis

階段一、認識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(進階)