重新复习兄弟连redis视频课程,为了便于记忆,记录一下笔记:
redis应用场景:
取最新N个数据。
排行榜,Top N.
精确设置过期时间的应用。
计数器应用,新浪微博主要应用。
Uniq操作,获取某段时间数据排重值。
实时操作,反垃圾系统。
Pub/Sub消息系统。
队列
缓存
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 [email protected]
>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());
}