docker安装redis
docker run -p 6379:6379 --name redis -v /d/docker_new/redis/redis.conf:/etc/redis/redis.conf -v /d/docker_new/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
composer安装redis
php composer.phar require --prefer-dist yiisoft/yii2-redis
main.php配置
main.php<?phpreturn [ 'aliases' => [ '@bower' => '@vendor/bower-asset', '@npm' => '@vendor/npm-asset', ], 'vendorPath' => dirname(dirname(__DIR__)) . '/vendor', 'components' => [ 'cache' => [ 'class' => 'yii\caching\FileCache', ], 'redis' => [ 'class' => 'yii\redis\Connection', 'hostname' => '10.0.18.170', //你的redis地址 'port' => 6379, //端口 // 'database' => 0, ] ],];
redis使用
<?phpnamespace backend\controllers;use backend\services\EsServices;use yii\web\Controller;use Yii;class RedisController extends Controller{ public function actionIndex() { $redis = Yii::$app->redis; // $redis = new \Redis(); // $redis->connect('10.0.18.170',6379); // echo "Connection to server successful"; //设置redis 字符串数据 // $redis->set("tutorial-name", "Redis tutorial"); //获取存储的数据并输出 // echo $redis->get("tutorial-name"); /** * 1.字符串String,键值对,创建更新同操作 */ $redis->set('key', 1); //设置key == a value = 1[true] // $arr = [ // 'key1' => '123', // 'key2' => '223', // 'key3' => '323' // ]; // $redis->mset($arr); //报错 mb_strlen() expects parameter 1 to be string, array given $redis->mset('key1','123','key2','223'); //设置一个或多个键值[true] $redis->setnx('key','value'); //key=value,key存在返回false $redis->get('key'); //获取key $aa = $redis->mget('key','key1','key2'); //,返回所查询键的值 $redis->del($key_arr); //删除key,支持数组批量删除,【返回删除个数】 $redis->delete($key_str,$key2,$key3); //删除keys,【返回删除个数】 $redis->getset('old_key','new_value'); //先获得key的值,再重新赋值 $aa = $redis->strlen('key1'); //获取当前key的长度 $aa = $redis->append('key','string'); //把string追加到key现有的value中,【返回追加后的长度】 $aa = $redis->incr('key33'); //自增1,如不存在key,赋值为1 $aa=$redis->incrby('key33',3); //自增$num,不存在则赋值为$num $redis->decr('key33'); //自减1 $redis->decrby('key33',3); //自减$num $redis->setex('key222', 10, 'value'); //key=value,有效期10秒 $aa = $redis->keys('*'); //遍历所有的键名 /** * 列表list 栈的结构,注意表头表尾,创建更新分开操作 */ $redis->lpush('list_key', 'value1'); //增,将value值插入列表表头 $redis->rpush('list_key', 'value2'); //增,将value插入列表表尾 $redis->lpushx('list_key','value3'); //增,只能将一个值value插入到列表key的表头,不存在不创建【列表的长度】 $redis->rpushx('list_key','value4'); //增,只能将一个值value插入到列表key的表尾 $redis->lpop('list_key'); //删,移除并返回列表key的头元素,【被删元素】 $redis->rpop('list_key'); //删,移除并返回列表key的尾元素,【被删元素】 $redis->brpop('key',); //删,移除并返回列表key的尾元素,第二个参数表示等待时长,超过时长返回nil $redis->blpop('key', 1); $redis->lrem('list_key',0,'value4'); //删,更加参数count的值,移除列表中与参数value相等的元素count=(0|-n表头向尾|+n表尾向头移除n个value) [被移除的数量 | 0] $redis->ltrim('list_key',0,3); //删,列表修剪,保留(start,end)之间的值 $redis->lset('list_key',0,'new_v'); //改,从表头数,将列表key下表为第index的元素的值改为new_v,【true|false】 $aa = $redis->lindex('list_key', 1); //查,返回列表key中,下表为inedx的元素【value|false】 $aa = $redis->lrange('list_key',0,5); //查,(start,stop|0,-1)返回列表key中指定区间内的元素 $aa = $redis->llen('list_key'); //返回列表key 的长度,不存在key返回0 /** * 集合set,没有重复的member,创建更新同操作 */ $redis->sadd('set_key','value1','value2','value3','value4'); //增,改,将一个或多个member元素加入到集合key当中,,已经存在于集合的member元素将被忽略。[insert_num] $redis->srem('set_key','value1','value2'); //删,移除集合key中的一个或多个member元素,不存在的member元素会被忽略 [del_num | false] $aa = $redis->smembers('set_key'); //查,返回集合key中的所有成员 $redis->sismember('set_key','member'); //判断member元素是否是集合key的成员 $redis->spop('set_key'); //删,移除并返回集合中的一个随机元素 $aa = $redis->srandmember('set_key'); //查,返回一个随机元素 $redis->sinter('key1','key2','keyn'); //查,返回所有给定集合的交集 $redis->sunion('key1','key2','keyn'); //查,返回所有给定集合的并集 $redis->sdiff('key1','key2','key3'); //查,返回所有给定集合的差集 $redis->scard('key'); //返回集合key的基数(集合中元素的数量) $redis->sMove('key1','key2','member'); //移动,将member元素从key1集合移动到key2集合 /** * 4.有序集合Zset,没有重复的member,有排序顺序,创建更新同操作 */ $aa = $redis->zadd('zset_key', 1,2,3,4,5,6,7,8,9,10,11,12,18,19); //增,改,将一个或多个member元素及score值加入有序集合 $redis->zrem('zset_key','member1','membern'); //删,移除有序集合key中的一个或多个成员,不存在的成员将被忽略。 $aa = $redis->zscore('zset_key',2); //查,通过值反拿权 $aa = $redis->zrange('zset_key',0,5); //查,通过(score从小到大)【排序名次范围】拿member的值,返回有序集中key中,【指定区间成员】 $aa = $redis->zrevrange('zset_key',0,5); //查,从大到小 $aa = $redis->zrangebyscore('zset_key',0,10); //查,通过score权范围拿member值,返回有序集key中,指定区间内(从小到大排)成员 $aa = $redis->zrevrangebyscore('zset_key',20,0); //查,通过score权范围拿member值,返回有序集key中,指定区间内(从大到小排)成员 $aa = $redis->zrank('zset_key',10); //查,通过member值查(score从小到大)排名结果中【member排序名次】 $aa = $redis->zrevrank('zset_key',10); //查,通过member值查(score从大到小)排名结果中【member排序名次】 $redis->ZINTERSTORE(); //交集 $redis->ZUNIONSTORE(); //差集 $redis->zcard('zset_key'); //返回集合key的基数(集合中元素的数量) $aa = $redis->zcount('zset_key',0,-1); ////返回有序集key中,score值在min和max之间(默认包括score值等于min或max)的成员。[num | 0] /** * 哈希Hash,表结构,创建更新同操作 */ $aa = $redis->hset('hset_key','a','a1111'); //增,改,将哈希表key中的field 值改为value,不存在创建,存在覆盖 $aa = $redis->hget('hset_key', 'a'); //查,取值 $aa = $redis->hmset('hmset_key','one',1,2,3); //增,改 $aa = $redis->hmget('hmset_key','one'); //查,获取指定下标的field $aa = $redis->hgetall('hmset_key');//查,返回哈希表key中的所有域和值。[当key不存在时,返回一个空表] $aa= $redis->hkeys('hmset_key'); //查,返回哈希表key中的所有域 $aa = $redis->hvals('hmset_key');//查,返回哈希表key中的所有值。[当key不存在时,返回一个空表] $redis->hdel('key',0,1);//删,删除指定下标的field,不存在的域将被忽略,[num | false] $redis->hexists('key','field');//查看hash中是否存在field,[1 | 0] $aa = $redis->hincrby('hmset_key','2',10);//为哈希表key中的域field的值加上量(+|-)num,[new_num | false] $redis->hlen('key');//返回哈希表key中域的数量。[ num | 0] /** * 其他操作 */ /*1.连接*/ $redis = newRedis(); $redis->connect('127.0.0.1', 6379, 1); //短链接,本地host,端口为6379,超过1秒放弃链接 $redis->open('127.0.0.1', 6379, 1); //短链接(同上) $redis->pconnect('127.0.0.1', 6379, 1); //长链接,本地host,端口为6379,超过1秒放弃链接 $redis->popen('127.0.0.1', 6379, 1); //长链接(同上) $redis->auth('password'); //登录验证密码,返回【true | false】 $redis->select(0); //选择redis库,0~15 共16个库 $redis->close(); //释放资源 $redis->ping(); //检查是否还再链接,[+pong] $redis->ttl('key'); //查看失效时间[-1 | timestamps] $redis->persist('key'); //移除失效时间[ 1 | 0] $redis->sort('key', [$array]); //返回或保存给定列表、集合、有序集合key中经过排序的元素,$array为参数limit等!【配合$array很强大】 [array|false] /*2.其他*/ $redis->dbSize(); //返回当前库中的key的个数 $redis->flushAll(); //清空整个redis[总true] $redis->flushDB(); //清空当前redis库[总true] $redis->save(); //同?把数据存储到磁盘-dump.rdb[true] $redis->bgsave(); //异步把数据存储到磁盘-dump.rdb[true] $redis->info(); //查询当前redis的状态 [verson:2.4.5....] $redis->lastSave(); //上次存储时间key的时间[timestamp] $redis->watch('key', 'keyn'); //监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断 [true] $redis->unwatch('key', 'keyn'); //取消监视一个(或多个) key [true] $redis->multi(Redis::MULTI); //开启事务,事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令在一个原子时间内执行。 $redis->multi(Redis::PIPELINE); //开启管道,事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令在一个原子时间内执行。 $redis->exec(); //执行所有事务块内的命令,;【事务块内所有命令的返回值,按命令执行的先后顺序排列,当操作被打断时,返回空值 false】 $redis->expire('key', 10); //设置失效时间[true | false] $redis->move('key', 15); //把当前库中的key移动到15库中[0|1] header("content-type: text/html;charset=utf-8"); echo "<pre>"; print_r($aa); exit; }}