2014-09-24 09:32:05 30334次浏览 5条回答 4 悬赏 0 金钱

不知道如何使用redis的hmset方法...
代码如下:
Yii::$app->redis->hmset('user:1',['name'=>'joe','solary'=>2000]);

报错如下
mb_strlen() expects parameter 1 to be string, array given

最佳答案

  • fly020212 发布于 2014-12-25 11:52 举报

    hash 数据的操作刚我们想象的不一样, 这么说吧,yii\redis\Connection 操作的 redis 的数据参数,没有数组,也没有数字的概念,只有字符串,Connection 是一个一个发送数据的,看 hmset 的参数说明

    127.0.0.1:6379> help hmset
    
      HMSET key field value [field value ...]
      summary: Set multiple hash fields to multiple values
      since: 2.0.0
      group: hash
    

    所以 Yii::$app->redis->hmset('user:1',['name'=>'joe','solary'=>2000]);
    其实应该是 Yii::$app->redis->hmset('user:1', 'name', 'joe', 'solary', 2000); 这么调用的

    当然你也可以通过
    Yii::$app->redis->executeCommand('HMSET', ['user:1', 'name', 'joe', 'solary', 2000]) 这么调用

    1 条回复
    回复于 2014-12-30 16:28 回复

    非常感谢!!!!能用了~~~

    , , 觉得很赞
  • 回答于 2014-09-24 14:21 举报

    直译报错信息的话应该是mb_strlen()的第一个参数应该是一个字符串结果给了一个数组 所以需要再次确认是不是hmset的存值引起的报错 $redis->hmset('test', array('name' =>'joe', 'solary'=>2000))这个是不在Yii中redis的hmset使用方法 建议换种写法试试

    1 条回复
    回复于 2014-09-24 14:24 回复

    追过源码了 知道是哪报的错 就是没弄明白redis的操作是怎么用的 set get方法 以及executeCommand('set',[])都没问题 ,hmset用不了

  • 回答于 2015-06-08 09:35 举报

    好像在yii2.0.4中没有找到redis的相关操作类,怎么破???

    4 条回复
    回复于 2015-06-23 13:48 回复

    是啊怎么破

    回复于 2015-06-23 17:47 回复

    yii2-redis 官方有扩展啊 戳这里

    回复于 2015-07-06 19:05 回复

    是啊,好多方法都没有,搞得不想redis了。我想获得hash的所有值hVals方法没有,hash长度hLen没有。

    回复于 2015-07-23 18:06 回复

    yii\redis\Connection

    'HVALS', // key Get all the values in a hash
    'HLEN', // key Get the number of fields in a hash
    

    源码里很清楚怎么没有

  • 回答于 2017-01-07 10:01 举报

    yii2.0 如何安装配置redis?

  • 回答于 2019-09-17 00:34 举报

    我想问问 redis发布订阅怎么用,我使用订阅的时候也提示mb_strlen()给了个数组这种错误

您需要登录后才可以回答。登录 | 立即注册
大裤衩子
CEO

大裤衩子 北京

注册时间:2013-02-17
最后登录:2023-12-29
在线时长:91小时52分
  • 粉丝92
  • 金钱8528
  • 威望120
  • 积分10638

热门问题