官網:https://redis.io/redis
在這裏插入圖片描述數據庫
在這裏插入圖片描述編程
官方給出的 10w OPS 數據存在內存中,讀取很是快 用c語言實現的(50000 line) Redis 線程模型:單線程緩存
在這裏插入圖片描述服務器
Redis全部的數據保存在內存中,對數據的更新將異步地保存在磁盤上 Redis 提供了 RDB,AOF持久化方式網絡
String Hash List Sets Sorted Sets數據結構
Redis 迭代中增長的數據結構app
BitMaps : 位圖 HyperLogLog :超小內存惟一計數 GEO :地理信息定位異步
在這裏插入圖片描述編程語言
發佈訂閱 Lua腳本 事物 pipeline
23000 lines of code 不依賴外部庫 (like libevent) 單線程模型
主從複製
高可用,分佈式
高可用 :Redis-Sentinel (v2.8 )支持高可用 分佈式 :Redis-Cluster (v3.0 ) 支持分數是
在這裏插入圖片描述
在這裏插入圖片描述
keys : 遍歷全部key
localhost:6379> keys * 1) "b" 2) "blog:90" 3) "blog:71" 4) "blog:80" 5) "myset" 6) "Back3"
dbsize : db長度
localhost:6379> dbsize(integer) 21
exisits key :判斷key是否存在
localhost:6379> exists a(integer) 1
del key :刪除key
localhost:6379> del a(integer) 1
expire key seconds :給key設置過時時間(秒)
localhost:6379> expire a 20(integer) 1
ttl key :查看key 還有多長時間過時 (注:-1 永不過時,-2不存在) persist key :去掉key的 過時時間
localhost:6379> ttl a(integer) -2localhost:6379> set a bOKlocalhost:6379> expire a 50(integer) 1localhost:6379> persist a(integer) 1
type key :查看key 類型
localhost:6379> type astring
#### 2. 字符串類型
set 、 get 、 del 操做
localhost:6379> set a bOKlocalhost:6379> get a"b"localhost:6379> del a(integer) 1
incr key 自增1,若是key不存在,自增後 get(key) = 1
decr key 自減1,若是key不存在,自減後get(key) = -1
incrby key k ,若是key不存在,自增後get(key) = k
localhost:6379> incr a(integer) 4localhost:6379> incr a(integer) 5localhost:6379> incr a(integer) 6localhost:6379> decr a(integer) 5localhost:6379> decr a(integer) 4localhost:6379> incrby a 20(integer) 24
set key value :進行覆蓋操做,無論key是否存在
setnx key :不存在,才設置
setxx :key 存在,才設置
localhost:6379> set a 1234OKlocalhost:6379> SETNX a 20(integer) 0localhost:6379> setnx b 20(integer) 0localhost:6379> setnx yxl 20(integer) 1localhost:6379> set a b xxOK
mget key1 key2 key3 : 批量獲取key,原子操做
mset key1 value1 key2 value2 : 批量設置key - value
localhost:6379> mget a b1) "b"2) "456"localhost:6379> mset a 200 b 500OK
getset key newvalue : set key newvalue 並返回舊的value
append key value : 將value 追加到舊到value
strlen key :返回字符串到長度
localhost:6379> getset a a"200"localhost:6379> APPEND a bcd(integer) 4localhost:6379> get a"abcd"localhost:6379> strlen a(integer) 4
incrbyfloat key 3.5 : 增長key 對應的值3.5
getrange key start end : 獲取字符串指定下標的全部值
setrange key index value :設置指定下標新的值
localhost:6379> incrbyfloat max 3.5"3.5"localhost:6379> getrange max 0 1"3."localhost:6379> setrange max 1 23(integer) 3localhost:6379> get max"323"
hget key field : 獲取hash key 對應的field 的value
hset key field value : 設置hash key 對應的field 的 value
hdel key fiela
localhost:6379> hget user:1:info age "23"localhost:6379> hset user:1:info age 23 sex 男(integer) 0localhost:6379> hset user: age 23 sex 男(integer) 2localhost:6379> hget user: age"23"localhost:6379> hset user: name 1234(integer) 1localhost:6379> hgetall user:1) "age"2) "23"3) "sex"4) "\xe7\x94\xb7"5) "name"6) "1234"localhost:6379> hdel user: age(integer) 1
hexists : 判斷hash key 是否有 field
hlen : 獲取 hash key field 的數量
localhost:6379> HGETALL user:1) "sex"2) "\xe7\x94\xb7"3) "name"4) "1234"localhost:6379> hexists user: name(integer) 1localhost:6379> hlen user:(integer) 2
hmget :hmget key field1 field 2 ......
hmset : hmset key field1 value1 field2 value2 .....
localhost:6379> hmset user2 age 30 name kakaOKlocalhost:6379> hlen user2(integer) 2localhost:6379> hmget user2 age name1) "30"2) "kaka"
hgetall :返回hash key 對應全部的field 和 value
hvals :返回hash key 對應全部 field 的value
hkeys :返回hash key 對應全部field
localhost:6379> HGETALL user21) "age"2) "30"3) "name"4) "kaka"localhost:6379> HVALS user21) "30"2) "kaka"localhost:6379> hkeys user21) "age"2) "name"在這裏插入圖片描述
rpush : 從列表右端插入值(1-N個)
lpush : 從列表左端插入值(1-N個)
127.0.0.1:6379> rpush list1 1 2 3(integer) 6127.0.0.1:6379> lpush list2 1 2 3(integer) 3
linsert : 在list 指定的值前|後插入 newValue
127.0.0.1:6379> linsert list2 before 2 1234(integer) 4127.0.0.1:6379> linsert list2 after 2 1234(integer) 5
lpop : 從列表左側彈出一個item
rpop : 從列表右側彈出一個item
127.0.0.1:6379> lpop list2"3"127.0.0.1:6379> rpop list2"1"
lrem : 根據count值,從列表中刪除全部value相等的項
127.0.0.1:6379> lrem list1 0 1(integer) 2
ltrim : 按照索引範圍修剪列表
lrange :獲取列表指定索引範圍全部item
OK127.0.0.1:6379> lrange list2 0 -11) "1234"2) "2"3) "1234"
lindex : 獲取指定列表的item
llen : 獲取列表長度
lset : 設置列表指定索引值爲newValue
127.0.0.1:6379> LINDEX list1 0"3"127.0.0.1:6379> llen list1(integer) 2127.0.0.1:6379> lset list1 0 1234OK127.0.0.1:6379> lrange list1 0 -11) "1234"2) "3"
sadd : 向集合key添加element(若是存在就添加失敗)
scard : 計算集合大小
sismember : 判斷it 是否在集合中
srandmember : 從集合中隨機挑count 個元素
spop :從集合中隨機彈出一個元素\
127.0.0.1:6379> sadd set1 1234(integer) 1127.0.0.1:6379> 127.0.0.1:6379> scard set1(integer) 1127.0.0.1:6379> sismember set1 1(integer) 0127.0.0.1:6379> sismember set1 1234(integer) 1127.0.0.1:6379> SRANDMEMBER set1 21) "1234"2) "7"127.0.0.1:6379> spop set1 11) "6"
zadd : 添加score 和 element
zrem : 刪除元素
127.0.0.1:6379> zadd zset 1 1234(integer) 1127.0.0.1:6379> 127.0.0.1:6379> zrem zset 1234(integer) 1
zincrby : 增長或減小元素的分數
zcard : 返回元素的總個數
zscore : 返回分數
127.0.0.1:6379> ZINCRBY zset 1 1"1"127.0.0.1:6379> zcard zset(integer) 1127.0.0.1:6379> zscore zset 1"1"
zrange :返回指定索引內升序元素
zrangebyscore : 返回指定分數範圍內升序元素
zremrangebyrank : 刪除指定排名內升序元素
zremrangebyscore : 刪除指定分數內升序元素
127.0.0.1:6379> zadd player 1000 ronaldo 900 messi 800 c-aa(integer) 3127.0.0.1:6379> zrange player 0 -11) "c-aa"2) "messi"3) "ronaldo"127.0.0.1:6379> zcount player 900 1000(integer) 2127.0.0.1:6379> zrangebyscore player 1000 10011) "ronaldo"127.0.0.1:6379> 127.0.0.1:6379> zremrangebyrank player 0 1(integer) 2127.0.0.1:6379> zrange player 0 -11) "ronaldo"在這裏插入圖片描述