redis 怎么存数组和获取数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis 怎么存数组和获取数组相关的知识,希望对你有一定的参考价值。
$redis = new redis();
$redis->connect('127.0.0.1', 6379);
$redis->set("asd",array('a'=>'aaa','b'=>"bbb",'c'=>'ccc'));
$a=$redis->get("asd");
这样写只会输出一个array 不是一个数组,该怎么写才会获取一个数组
有两种方法:
1.把要存的数组序列化 或者 json_encode后 变成字符串再存。取的时候 反序列号或者json_decode处理成数组。
2.可以使用hash结构,以key作为1维,以hash中的field作为第二维。
redis 如何操作多维数组?
1.Redis用list这种一维数组来模拟二维。
2.序列化一下保存的数据,在原有的hset跟hget的基础上新增了两个方法 setArr跟getArr 调用 hset hget 用来保存多维数组的情况,这两个方法是在存之前,取之后都进行序列化操作。
3.用redis存多维数组,可以把数组json_encode转换成json各式数据,以string类型的方式存储。读取的时候再json_decode回来。
4.Redis本身不支持存取php数组的数据结构,但是如何存取PHP的数组呢?可以把数组序列化,以字符串的形式缓存到Redis中。
5.以使用hmset把PHP数组保存为hash类型的数据,使用hmget读取一维的键没问题,读取二维的多维的键就返回false。
参考技术A 可以使用hash结构,以key作为1维,以hash中的field作为第二维(不过主要注意,不要让field的数量过大)! 参考技术B 把要存的数组序列化 或者 json_encode后 变成字符串再存。取的时候 反序列号或者json_decode处理成数组。Redis之Hash
Hash描述
1、Hash和PHP的数组非常相似;
2、最多可以存2^32 -1个数据;
3、可以保存多个key-value键值对,每个K-V都是字符串类型;
4、其实就是一个属性下面有好多的子属性,比如每个用户下面有名称、性别、电话,这些属性都是用户的子属性。
Hash的基本操作
利用laravel封装常用的操作
设置对应的键值
arr是一个数组,设置的时候通过数组,一次性可以设置多个或一个很方便。
获取对应的键值
通过数组,数组为空直接获取全部,有值就获取对应的值;
对特定的字段进行增值
比如他可以用来设置用户的粉丝数、关注数、访问的次数;
获取对应键的长度
这个其实是在获取对应键子属性的个数。
适用场景
1、比如我们会员的资料就可以放在缓存里面,键就是会员的唯一标识,他的子属性就可以是姓名、电话、性别等等;
2、使用一些结构化的数据存储。
总结
1、hash的类型其实就是我们的关联数组,非常易于操作;
2、我们可以精确操作每个属性;
3、在Memcached中,需要修改其中某一项时,通常需要将所有值取出反序列化后,修改某一项的值,再序列化存储回去。这样不仅增大了开销,也不适用于一些可能并发操作的场合,这个时候Redis比Memcached的性能要强。
以上是关于redis 怎么存数组和获取数组的主要内容,如果未能解决你的问题,请参考以下文章