從新複習兄弟連redis視頻課程,爲了便於記憶,記錄一下筆記:php
redis應用場景:redis
取最新N個數據。
數據庫
排行榜,Top N.緩存
精確設置過時時間的應用。安全
計數器應用,新浪微博主要應用。app
Uniq操做,獲取某段時間數據排重值。dom
實時操做,反垃圾系統。ui
Pub/Sub消息系統。spa
隊列orm
緩存
Redis下載安裝:redis.io/download
#tar -zxvf redis.tar.gz
#cd redis
#make(32位機器make CFLAGS="-march=i686")
#cd src
#make install
注意,不須要config,make install 須要進入src目錄。因爲redis不能指定安裝目錄須要本身整理
#mkdir -p /usr/local/redis/bin /usr/local/redis/etc
#mv redis.conf /usr/local/redis/etc
#mv mkreleasehdr.sh redisbenchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin
redis默認端口6379
啓動服務 #/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
修改 daemonize yes 後臺啓動
客戶端鏈接 #/usr/local/redis/bin/redis-cli
中止:
#/usr/local/redis/bin/redis-cli shutdown
#pkill redis-server
>keys * 顯示全部key
>exists key 是否存在
>del key 刪除
>expire key 10 設置key10秒期
>ttl key 查看key過時剩餘時間
>persist key 轉爲不過時
>select 0 選擇到0數據庫
>move key 1 移動到1數據庫
>randomkey 隨機返回key
>rename key key_new
>type key
服務命令
>ping
>echo 'ggo'
>dbsize key的數目
>info 信息
>config get * 配置獲取
>flushdb 清空當前數據庫
>flushall 清空全部數據庫
安全性設置
修改redis.conf requirepass
>auth password
redis-server -a password
操做
1.string
>set name jim
>get name
>set name jim green
>setnx name jim
>setex color 10 red
>set email test@sina.com
>setrange email 5 sohu.com
>mset k1 v1 k2 v2
>msetnx
>getset 設置key的值,返回舊值
>getrange email 0 4 獲取子字符串
>mget key1 key2 key3
>incr key
>incrby key 3
>incrby key -5 //減
>decr key
>decrby key 2 減
>decrby key -5 加
>append key str
>strlen key
2 hash 添加刪除都是O(1),適合存儲對象,比string佔用內存更少
>hset hashtable field value
>hget hashtable field
>hsetnx hashtable field value
>hmset hashtable field1 value1 field2 value2 .....
>hmget hashetale field1 field2 ...
>hincrby hashetale age -3
>hexists user:001 age
>hlen hashtable
>hgetall user:001
>hdel user:001 age
>hkeys myhash
>hvals myhash
3. list 棧,隊列
>lpush mylist val
>lrange mylist 0 -1 從頭至尾
>lpop mylist
>rpush rpop
>linsert mylist before world my
>linsert mylist after world my
>lset mylist 0 your //0表示左邊第一位 修改成your
> lrem mylist 1 your //刪除1個your ,若是是0 ,刪除全部
>ltrim mylist 1 -1 //保留1以後的值,也就是刪除最左邊的
>rpoplpush list1 list2
>rpoplpush list1 list1
>lindex list1 0 返回指定位置的元素
>llen list1
4 set-string的無序集合,添加刪除,查找都是O(1)
>sadd set1 hello
>smembers set1
>srem set1 hello
>spop set1 //隨機彈出
>sdiff set1 set2 set3
>sdiffstore set4 set1 set2 //set1,set2的差集存到set4
>sinter set1 set2
>sinterstore set5 set1 set2
>sunion set1 set2
>sunionstore set6 set1 set2
>smove set2 set1 two //set2中two移到set1
>scard set1 元素個數
>sismember set1 one
>srandmember set1 //隨機返回不刪除
有序集合
>zadd zset1 1 one
>zrange zset1 0 -1 withscores
>zrem zset1 one
>zincrby zset1 2 one
>zrank zset1 one 獲取順序值,按照score排序
>zrevrank zset1 one 按照score排序從大到小排序的順序值
>zrevrange zset1 0 -1 withscores
>zrangebyscore zset1 1 3 withscores
>zcount zset1 1 5 返回score 在1-5的元素個數
>zcard zset1
>zremrangebyrank zset1 0 1
<?php
try {
$redis = new Redis();
$ret = $redis->connect('localhost');
if ($ret === false) {
die($redis->getLastError());
}
$ret = $redis->auth('123456');
if ($ret === false) {
die($redis->getLastError());
}
//$redis->flushdb();
$ret = $redis->set("key", "value");
if ($ret === false) {
die($redis->getLastError());
} else {
echo "OK";
echo '<br/>';
$ret = $redis->get("key");
print_r($ret);
echo '<hr/>keys:<br/>';
$keys = $redis->keys('*');
var_dump($keys);
echo '<hr/>db size:<br/>';
echo $redis->dbSize();
echo '<hr/>db info:<br/>';
$info = $redis->info();
print_r($info);
echo '<hr/>dbindex:<br/>';
$dbindex = $redis->select(4);
var_dump($dbindex);
echo '<hr/>db size:<br/>';
echo $redis->dbSize();
echo '<hr/>db info:<br/>';
$info = $redis->info();
print_r($info);
$redis->hMset('test',array('key1'=>'v1','key2'=>'v2'));
echo '<hr/>keys:<br/>';
$keys = $redis->keys('*');
var_dump($keys);
$dbindex = $redis->getDBNum();
echo '<hr/>db index:<br/>';
var_dump($dbindex);
}
} catch (RedisException $e) {
die("Uncaught exception " . $e->getMessage());
}