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 怎么存数组和获取数组的主要内容,如果未能解决你的问题,请参考以下文章

redis 如何存一个PHP数组 代码怎么写呢

使用laravel的redis怎么存数组

小程序如何获取一个数组里的字段?

Redis之Hash

mysql中怎么存储数组

Redis高级数据结构实战(一)BitMap用户连续签到