1. 什麼是Redisredis
Redis是由意大利人Salvatore Sanfilippo(網名:antirez)開發的一款內存高速緩存數據庫。Redis全稱爲:Remote Dictionary Server,該軟件使用C語言編寫,Redis是一個key-value存儲系統,它支持豐富的數據類型,如:string、list、set、zset(sorted set)、hash。 Redis特色: Redis之內存做爲數據存儲介質,因此讀寫數據的效率極高,遠遠超過數據庫。 Redis應用場景: 由於Redis交換數據快,因此在服務器中經常使用來存儲一些須要頻繁調取的數據,這樣能夠大大節省系統直接讀取磁盤來得到數據的I/O開銷,更重要的是能夠極大提高速度。 將這種熱點數據存到Redis(內存)中,要用的時候,直接從內存取,極大的提升了速度和節約了服務器的開銷。
進入redis數據庫
redis-cli
#不能進入,就安裝:
sudo apt-get update
sudo apt-get install redis-server
string
字符串緩存
list
列表服務器
hash
哈希app
set
集合ui
sorted sets
有序集合spa
#設置
set key value 例: ( set name 'jianeng' )
# 獲取
get key 例: ( get name )
# key是惟一的,不能用同一個key 否則就會覆蓋
查看過時時間code
# -1 表示永久 -2 表示 不存在
ttl key 例: ( ttl name )
設置過時時間server
# 給已經存在 key,設置過時時間
expire key seconds 例: ( expire name 20 )
# 設置 key的同時,設置過時時間
set key value ex seconds 例: ( set age 18 ex 20 )
或
setex key seconds value 例: ( setex sex 20 '男' )
追加索引
# 給已有的value,再添加新的值
# append key value
例
append name love
#get name
redis 裏面全部的 value。 都是字符串類型的
設置 / 獲取 多個
#設置多個 string
mset key value key value..
例子
mset username 'jianeng' password '123'
#獲取多個
mget key key key ...
例
mget username password name
key 操做
# 查看全部的key
keys *
keys n*
# 刪除
del key 例: (del name)
# 查看key是否存在 ,存在返回 1, 不存在返回 0
exists key
# 查看key類型
type key
set num 1 # 自動識別,字符串裏面的 整數
# +1
incr key 例 (incr num)
# -1
decr key 例 (decr num)
# +整數
incrby key increment 例 (incrby num 50)
# -整數
decrby key increment 例 (decrby num 50)
設置
#lpush 左添加 (棧)
lpush key value #例 lpush my_list a b c d
#rpush 右添加 (隊列)
rpush key value #例 rpush my_rlist a b c d
查看
# lrange key start stop
例 查看全部
lrange my_list 0 -1
得到list的元素個數
llen key #例 llen my_list
查看位於lindex 位置上的元素
lindex key index #例 lindex my_list 3
刪除
lpop
刪除左邊第一個
lpop key #例 lpop my_rlist
rpop
刪除右邊第一個
rpop key #例 rpop my_list
lrem
刪除指定
rpush test_list a a b b c d e a d f m c
#lrem key count value
#count > 0 從左往右 刪除數量爲count的value
例 : lrem test_list 2 a
#count = 0 刪除全部的 value
例 : lrem test_list 0 a
#count < 0 從右往左 刪除數量爲count的value
例 : lrem test_list -1 b
設置
# hset key field value
例 user { name:jianeng}
hset user name jianeng
獲取
# hget key field
例
hget user name
刪除
# hdel key field
例
hdel user name
設置多個
#hmset key field value [field value]
例 user{name:jianeng , age:18, sex:male }
hmset user name jianeng age 18 sex male
獲取多個
# hmget key field field
例
hmget user name age
獲取所有field value
# hgetall key
例 itmes
hgetall user
獲取全部的field
# hkeys key
例 keys
hkeys user
獲取全部的value
# hvals key
例 values
hvals user
獲取field
的個數
# hlen key
例
hlen user
設置
# sadd key value [value] (惟一,無序)
例
sadd my_set m n b v c x z b
獲取
# 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 z
判斷集合存在某個值
# 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
設置
# 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 withscores
zrevrange
倒序
#zrevrange key start stop
zrevrange my_zset 0 -1 withscores
刪除
#zrem key member
zrem my_zset two
索引
zrank正序
# zrank key member
例
zrank my_zset three
zrevrank反序
# zrevrank key member
例
zrevrank 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 two
zremrangebyrank : 刪除集合中排名在給定區間的元素(正向)
# zrange my_zset 0 -1 withscores
zremrangebyrank my_zset 1 3
zremrangebyscore : 刪除集合中 score 在給定區間的元素
# zrange my_zset 0 -1 withscores
zremrangebyscore my_zset 3 5
Redis
發佈和訂閱
#發佈 publish 頻道 消息 # 訂閱 subscribe 頻道