1. 程式人生 > >redis api的使用和理解

redis api的使用和理解

字串

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