docker安装redis

  1. 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

  1. php composer.phar require --prefer-dist yiisoft/yii2-redis

main.php配置

  1. main.php
  2. <?php
  3. return [
  4. 'aliases' => [
  5. '@bower' => '@vendor/bower-asset',
  6. '@npm' => '@vendor/npm-asset',
  7. ],
  8. 'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
  9. 'components' => [
  10. 'cache' => [
  11. 'class' => 'yii\caching\FileCache',
  12. ],
  13. 'redis' => [
  14. 'class' => 'yii\redis\Connection',
  15. 'hostname' => '10.0.18.170', //你的redis地址
  16. 'port' => 6379, //端口
  17. // 'database' => 0,
  18. ]
  19. ],
  20. ];

redis使用

  1. <?php
  2. namespace backend\controllers;
  3. use backend\services\EsServices;
  4. use yii\web\Controller;
  5. use Yii;
  6. class RedisController extends Controller
  7. {
  8. public function actionIndex()
  9. {
  10. $redis = Yii::$app->redis;
  11. // $redis = new \Redis();
  12. // $redis->connect('10.0.18.170',6379);
  13. // echo "Connection to server successful"; //设置redis 字符串数据
  14. // $redis->set("tutorial-name", "Redis tutorial"); //获取存储的数据并输出
  15. // echo $redis->get("tutorial-name");
  16. /**
  17. * 1.字符串String,键值对,创建更新同操作
  18. */
  19. $redis->set('key', 1); //设置key == a value = 1[true]
  20. // $arr = [
  21. // 'key1' => '123',
  22. // 'key2' => '223',
  23. // 'key3' => '323'
  24. // ];
  25. // $redis->mset($arr); //报错 mb_strlen() expects parameter 1 to be string, array given
  26. $redis->mset('key1','123','key2','223'); //设置一个或多个键值[true]
  27. $redis->setnx('key','value'); //key=value,key存在返回false
  28. $redis->get('key'); //获取key
  29. $aa = $redis->mget('key','key1','key2'); //,返回所查询键的值
  30. $redis->del($key_arr); //删除key,支持数组批量删除,【返回删除个数】
  31. $redis->delete($key_str,$key2,$key3); //删除keys,【返回删除个数】
  32. $redis->getset('old_key','new_value'); //先获得key的值,再重新赋值
  33. $aa = $redis->strlen('key1'); //获取当前key的长度
  34. $aa = $redis->append('key','string'); //把string追加到key现有的value中,【返回追加后的长度】
  35. $aa = $redis->incr('key33'); //自增1,如不存在key,赋值为1
  36. $aa=$redis->incrby('key33',3); //自增$num,不存在则赋值为$num
  37. $redis->decr('key33'); //自减1
  38. $redis->decrby('key33',3); //自减$num
  39. $redis->setex('key222', 10, 'value'); //key=value,有效期10秒
  40. $aa = $redis->keys('*'); //遍历所有的键名
  41. /**
  42. * 列表list 栈的结构,注意表头表尾,创建更新分开操作
  43. */
  44. $redis->lpush('list_key', 'value1'); //增,将value值插入列表表头
  45. $redis->rpush('list_key', 'value2'); //增,将value插入列表表尾
  46. $redis->lpushx('list_key','value3'); //增,只能将一个值value插入到列表key的表头,不存在不创建【列表的长度】
  47. $redis->rpushx('list_key','value4'); //增,只能将一个值value插入到列表key的表尾
  48. $redis->lpop('list_key'); //删,移除并返回列表key的头元素,【被删元素】
  49. $redis->rpop('list_key'); //删,移除并返回列表key的尾元素,【被删元素】
  50. $redis->brpop('key',); //删,移除并返回列表key的尾元素,第二个参数表示等待时长,超过时长返回nil
  51. $redis->blpop('key', 1);
  52. $redis->lrem('list_key',0,'value4'); //删,更加参数count的值,移除列表中与参数value相等的元素count=(0|-n表头向尾|+n表尾向头移除n个value) [被移除的数量 | 0]
  53. $redis->ltrim('list_key',0,3); //删,列表修剪,保留(start,end)之间的值
  54. $redis->lset('list_key',0,'new_v'); //改,从表头数,将列表key下表为第index的元素的值改为new_v,【true|false】
  55. $aa = $redis->lindex('list_key', 1); //查,返回列表key中,下表为inedx的元素【value|false】
  56. $aa = $redis->lrange('list_key',0,5); //查,(start,stop|0,-1)返回列表key中指定区间内的元素
  57. $aa = $redis->llen('list_key'); //返回列表key 的长度,不存在key返回0
  58. /**
  59. * 集合set,没有重复的member,创建更新同操作
  60. */
  61. $redis->sadd('set_key','value1','value2','value3','value4'); //增,改,将一个或多个member元素加入到集合key当中,,已经存在于集合的member元素将被忽略。[insert_num]
  62. $redis->srem('set_key','value1','value2'); //删,移除集合key中的一个或多个member元素,不存在的member元素会被忽略 [del_num | false]
  63. $aa = $redis->smembers('set_key'); //查,返回集合key中的所有成员
  64. $redis->sismember('set_key','member'); //判断member元素是否是集合key的成员
  65. $redis->spop('set_key'); //删,移除并返回集合中的一个随机元素
  66. $aa = $redis->srandmember('set_key'); //查,返回一个随机元素
  67. $redis->sinter('key1','key2','keyn'); //查,返回所有给定集合的交集
  68. $redis->sunion('key1','key2','keyn'); //查,返回所有给定集合的并集
  69. $redis->sdiff('key1','key2','key3'); //查,返回所有给定集合的差集
  70. $redis->scard('key'); //返回集合key的基数(集合中元素的数量)
  71. $redis->sMove('key1','key2','member'); //移动,将member元素从key1集合移动到key2集合
  72. /**
  73. * 4.有序集合Zset,没有重复的member,有排序顺序,创建更新同操作
  74. */
  75. $aa = $redis->zadd('zset_key', 1,2,3,4,5,6,7,8,9,10,11,12,18,19); //增,改,将一个或多个member元素及score值加入有序集合
  76. $redis->zrem('zset_key','member1','membern'); //删,移除有序集合key中的一个或多个成员,不存在的成员将被忽略。
  77. $aa = $redis->zscore('zset_key',2); //查,通过值反拿权
  78. $aa = $redis->zrange('zset_key',0,5); //查,通过(score从小到大)【排序名次范围】拿member的值,返回有序集中key中,【指定区间成员】
  79. $aa = $redis->zrevrange('zset_key',0,5); //查,从大到小
  80. $aa = $redis->zrangebyscore('zset_key',0,10); //查,通过score权范围拿member值,返回有序集key中,指定区间内(从小到大排)成员
  81. $aa = $redis->zrevrangebyscore('zset_key',20,0); //查,通过score权范围拿member值,返回有序集key中,指定区间内(从大到小排)成员
  82. $aa = $redis->zrank('zset_key',10); //查,通过member值查(score从小到大)排名结果中【member排序名次】
  83. $aa = $redis->zrevrank('zset_key',10); //查,通过member值查(score从大到小)排名结果中【member排序名次】
  84. $redis->ZINTERSTORE(); //交集
  85. $redis->ZUNIONSTORE(); //差集
  86. $redis->zcard('zset_key'); //返回集合key的基数(集合中元素的数量)
  87. $aa = $redis->zcount('zset_key',0,-1); ////返回有序集key中,score值在min和max之间(默认包括score值等于min或max)的成员。[num | 0]
  88. /**
  89. * 哈希Hash,表结构,创建更新同操作
  90. */
  91. $aa = $redis->hset('hset_key','a','a1111'); //增,改,将哈希表key中的field 值改为value,不存在创建,存在覆盖
  92. $aa = $redis->hget('hset_key', 'a'); //查,取值
  93. $aa = $redis->hmset('hmset_key','one',1,2,3); //增,改
  94. $aa = $redis->hmget('hmset_key','one'); //查,获取指定下标的field
  95. $aa = $redis->hgetall('hmset_key');//查,返回哈希表key中的所有域和值。[当key不存在时,返回一个空表]
  96. $aa= $redis->hkeys('hmset_key'); //查,返回哈希表key中的所有域
  97. $aa = $redis->hvals('hmset_key');//查,返回哈希表key中的所有值。[当key不存在时,返回一个空表]
  98. $redis->hdel('key',0,1);//删,删除指定下标的field,不存在的域将被忽略,[num | false]
  99. $redis->hexists('key','field');//查看hash中是否存在field,[1 | 0]
  100. $aa = $redis->hincrby('hmset_key','2',10);//为哈希表key中的域field的值加上量(+|-)num,[new_num | false]
  101. $redis->hlen('key');//返回哈希表key中域的数量。[ num | 0]
  102. /**
  103. * 其他操作
  104. */
  105. /*1.连接*/
  106. $redis = newRedis();
  107. $redis->connect('127.0.0.1', 6379, 1); //短链接,本地host,端口为6379,超过1秒放弃链接
  108. $redis->open('127.0.0.1', 6379, 1); //短链接(同上)
  109. $redis->pconnect('127.0.0.1', 6379, 1); //长链接,本地host,端口为6379,超过1秒放弃链接
  110. $redis->popen('127.0.0.1', 6379, 1); //长链接(同上)
  111. $redis->auth('password'); //登录验证密码,返回【true | false】
  112. $redis->select(0); //选择redis库,0~15 共16个库
  113. $redis->close(); //释放资源
  114. $redis->ping(); //检查是否还再链接,[+pong]
  115. $redis->ttl('key'); //查看失效时间[-1 | timestamps]
  116. $redis->persist('key'); //移除失效时间[ 1 | 0]
  117. $redis->sort('key', [$array]); //返回或保存给定列表、集合、有序集合key中经过排序的元素,$array为参数limit等!【配合$array很强大】 [array|false]
  118. /*2.其他*/
  119. $redis->dbSize(); //返回当前库中的key的个数
  120. $redis->flushAll(); //清空整个redis[总true]
  121. $redis->flushDB(); //清空当前redis库[总true]
  122. $redis->save(); //同?把数据存储到磁盘-dump.rdb[true]
  123. $redis->bgsave(); //异步把数据存储到磁盘-dump.rdb[true]
  124. $redis->info(); //查询当前redis的状态 [verson:2.4.5....]
  125. $redis->lastSave(); //上次存储时间key的时间[timestamp]
  126. $redis->watch('key', 'keyn'); //监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断 [true]
  127. $redis->unwatch('key', 'keyn'); //取消监视一个(或多个) key [true]
  128. $redis->multi(Redis::MULTI); //开启事务,事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令在一个原子时间内执行。
  129. $redis->multi(Redis::PIPELINE); //开启管道,事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令在一个原子时间内执行。
  130. $redis->exec(); //执行所有事务块内的命令,;【事务块内所有命令的返回值,按命令执行的先后顺序排列,当操作被打断时,返回空值 false】
  131. $redis->expire('key', 10); //设置失效时间[true | false]
  132. $redis->move('key', 15); //把当前库中的key移动到15库中[0|1]
  133. header("content-type: text/html;charset=utf-8");
  134. echo "<pre>";
  135. print_r($aa);
  136. exit;
  137. }
  138. }