redis api的使用和理解
阿新 • • 發佈:2018-12-20
字串
key value
hello world
counter 1
bits 10111101
value 儲存為json
up to 512M
建議key value在100k 以內
字串型別 :
場景
- 快取
- 計數器
- 分散式鎖
- 等等
get set del
get key
set key value
del key
incr decr incrby decrby
incr key #key自增1 如果key不存在 自增後get (key)=1 decr key #key自減1 如果key不存在 自減後get(key)=-1 incrby key k #key 自增k,如果key不存在,自增後get(key)=k decr key k #key自減k,如果key不存在,自減後get(key)=-k
實戰:記錄每次主頁瀏覽量
快取視訊的基本資訊資料來源在mysql 虛擬碼
public VideoInfo get(long id ){
String redisKey = redisPrefix +id ;
VideoInfo videoInfo = redis.get(redisKey);
if(videoInfo ==null){
videoInfo = mysql.get(id);
if(videoInfo!=null){
//序列化
redis.set(redisKey,serialize(videoInfo));
}
}
}
實現分散式:
redis是單執行緒
set setnx setxx
set key value
#不管key是否存在都設定
setnx key value
#key 不存在,才設定
set key value xx
#key存在 才設定
exists php
0
set php good
ok
setnx php bad
0
set php best xx
get php
"best"
exist java
0
setnx java best
1
set java easy xx
ok
get java
"easy"
exists lua
0
set lua heh xx
(nil)
mget mset
mget key1 key2 key3 #批量獲取key 原子操作 mset key1 value1 key2 value2 key3 value3 #批量設定key-value mset hello world jave best php good mget hello java php
n次get網路時間+n次命令時間
getset key newvalue
#set key newvalue 並返回舊的value
append key value
#將value 追加到舊的value
strlen key
#返回字串的長度 注意中文
set hello world
ok
getset hello php
"world"
append hello ",java"
8
get hello
"php,java"
strlen hello
8
set hello "足球"
ok
strlen hello 4
**incrbyfloat getstrange setrange **
incrbyfloat key 3.5
#增加key對應的值3.5
getrange key start end
#獲取字串制定下標所有的值
setrange key index value
#設定指定下標所有對應的值
incr counter
incrbyfloat counter 1.1
"2.1"
get counter
”2.1“
set hello javabest
ok
gerange hello 0 2
"jav"setrange hello 4 p