一:redis簡介:
redis的同類型產品(memcache、mongodb)
緩存數據庫(非關系型數據庫):Remote Dictinoary server(內存告訴緩存數據庫)
C語言編寫,key-value
好處:支持豐富的數據結構:string、list、hash====、master/slave主從、數據的持久化
為什么使用:高速讀取數據、減輕數據庫負擔、集合計算功能、多種數據結構支持
使用場景:
高並發場景、防攻擊、熱門話題
二、redis的安裝、使用
2.1服務端的安裝
windows:下載軟件包
cd E:\wamp\redis =è redis-server redis.conf
linux: 編譯
2.2客服端在調用
2.2.1 直接通過redis-cli來訪問redis服務端
cd E:\wamp\redis =è redis-cli –h 127.0.0.1 –p 6379
set(設置key): SET key value [ex過期秒數] [px 過期毫秒數] nx xx
nx :只有鍵不存在時,才對鍵進行設置操作
xx:只有鍵已經存在時,才對鍵進行設置操作
get(讀取數據):GET key
2.2.2 phpredis
下載地址:http://pecl.php.net/package/redis
windows: 直接下載(php_redis-3.1.2-7.0-ts-vc-14-x86)
$redis = new redis(); $redis->connect( '127.0.0.1', 6379 ); $redis->set( 'packphp', '666777' ); //ctrl+左鍵 跟蹤代碼 ctrl+o 顯示類的方法 $handsome = $redis->get( 'packphp' ); var_dump( '<pre>', $handsome );exit;
linux: phpize編譯安裝
三、redis的數據結構
3.1、存儲方式
Keys:給存儲在redis內存中的數據起的變量名字
命名規范:空格、\n 不能使用
取名:簡短、有意義(sixstar:teacher:hansome)
values: Strings Lists Sets Sorted sets Hash
3.2、string類型
存儲任何數據:通過序列化來存儲,serialize unserialize 序列化 反序列化持久化的memcache
操作方法:
set( ‘key’, ‘value’) 設置值 get( ‘key’ )
mset( $array ) 一維數組(一次設置多個元素的值)
mget( $array ) 一次獲取多個值
incr 對key做自增,返回新的值
decr 對key做自減,返回新的值
incrby(’key’, value) 加指定值 $redis-> incrby( ‘pack’, 100 );
decrby() 減指定值
append() 給指定key的字符串值追加value
substr( $key, $start, $end ) 字符串截取
3.3、List
list類型:雙向鏈表。通過push,pop操作從鏈表的頭部或者尾部添加刪除元素
list既可以用作棧,也可以用做隊列
lrange( key,start,end); 讀取指定區間的元素,從0開始索引
lpush( key, val1, val2,…valn); 在key對應的頭部添加字符串元素
rpush(key, val1, val2,…valn ); 在key對應的尾部添加
$redis->lpush( 'packpython1', 'shell', 'linux', 'oracle'); $redis->rpush( 'packpython1', 'mui','mui1','mui2');
lpop( ‘key’) 從list的頭部刪除元素, 並返回被刪除的元素
rpop(‘key’) 從list的尾部刪除元素, 並返回被刪除的元素
llen() 返回list長度
ltrim( key, start , end ); 截取list,保留指定區間元素
3.4 Set(Set) string類型的無序集合(2的32次方-1)
操作方法:添加、刪除、並集、交集、差集
sAdd( key, value1,value2,….valuen)添加一個string元素到key對應的set集合中
sMembers( key ); 返回key對應set的所有元素,結果是無序的
sRem( key, val1 ) 移除指定元素(value)
scard( key ); 返回set元素的個數
sismember( key, val ) 判讀key的集合中是否存在元素val
sinter( key1, key2 ) 返回所有給定的set(集合)的交集
sunion( key1, key2 ) 返回所有給定的set(集合)的並集
sdiff( key1, key2 ) 返回所有給定的set(集合)的差集
3.5 Sort Set string類型的元素的集合
每一個元素都會關聯一個權,通過權值可以有序的獲取集合中的元素
zAdd( key, score, value1, score2, value2 ) 添加元素到集合,如果元素在集合中存在更新對應score
zCard( key ); 返回集合中元素個數
zScore( key, value ); 返回給定元素的score
zRem( key, val ); 刪除指定元素(元素值)
zRemrangebyrank( key, score1, score2 ); 刪除集合中排名(權重)在給定區間的元素
zRange( key, start, end ) 從集合中返回指定區間(索引),返回按自增排序的數組
zRangebyscore(key, start, end ) 從集合中返回指定區間(權重值),返回按自增排序的數組
zRevrange() 同上,降序排序
zRevrangebyscore() 同上,降序排序
zIncrby( key, ++score, val ) 增加某個val的權重值
3.6、hash(h)
hSet( ‘key’, ‘hashkey1’, val1 ) 設置key的某個hashkey1為val1
hGet( ‘key’, ‘hashkey1’ ) 讀取key下hashkey1的值
hMset( ‘key’, ‘arr’) 設置key下多個hashkey的值(通過arr的key(hashkey)對應到val(hashval))
hMget( ‘key’, ‘arr’ ) 讀取key下多個hashkey的值(arr的value值為hashkey)
hDel( ‘key’, ‘hashkey1’,’hashkey2=null’,’hashkey3=null’) 刪除key下指定hashkey1的值
hIncrBy( ‘key’, ‘hashkey1’, int number) 給key下指定的hashkey1增加整型數值
hIncrByFloat( ‘key’, ‘hashkey1’,float number) 給key下指定的hashkey1增加金額
hLen( ‘key’); 獲得key下的field個數
hGetall( ‘key’); 返回指定key的數據結果(返回所有的field和value)
hKeys( ‘key’); 返回指定key下的所有field
hVals(‘key’); 返回指定key下的所有value