thinkphp 使用redis 整理(二) mark 一下

摘要:
$data=array_merge;[rk:sv]递归的array_merge_recursive()与array_merge()函数的区别在于处理两个或更多个数组元素有相同的键名时。$this-˃redis-˃exists){//不存在,此时需要记入redis}3.ZSET类型,和set一样也是string类型元素的集合不同的是每个元素都会关联一个double类型的分数。成员是唯一的,但分数score却可以重复====================删除:$this-˃redis-˃del;//多条移除某一条:$this-˃redis-˃zRem;赋值:多条数据:$ids=$model-˃…-˃getField;//返回以order_no为key的数组$this-˃redis-˃zAddArray;$arr=$model-˃...-˃field-˃order-˃select();$data=[];foreach{$arr[$val['sort']]=$val;//返回以sort为主键的数组}$this-˃redis-˃zAddArray("product

参考手册http://www.cnblogs.com/weafer/archive/2011/09/21/2184059.html

redis 几种数据类型选择,参考 :

https://blog.csdn.net/xlgen157387/article/details/60958657

https://www.cnblogs.com/George1994/p/7191011.html

PHP + redis 类库: https://www.cnblogs.com/whoamme/p/5379469.html

实际代码中应用:

参考 :http://www.runoob.com/redis/redis-data-types.html

整理如下:

数组 排序 array_multisort(array_column($list,'order_no'),SORT_DESC,$list); // 根据数组中某个字段 倒序排序

$findkey = $this->redis->Keys('product:news:'.$pro_id); // zset 或者 string

$this->redis->delete($findkey);

可直接 使用 $this->redis->del('product:news:1'); 即指定key 进行删除 $this->redis->del('index_info');

删除 所有detail :

$ret = $this->redis->Keys('news:detail:*');

$this->redis->delete($ret);

几种常用数据类型

1.String 字符串类型, key value 的数据类型 (推荐/置顶 的几条数据)

当查询返回的数据$data是数组时,(单个值时,不需要json_encode … 处理)


注意:两数组合并时,避免null 影响合并,需转换数据类型。

$data=array_merge((array)$pushdata,(array)$data);
[rɪˈkɜ:sɪv] 递归的

array_merge_recursive()array_merge()函数的区别在于处理两个或更多个数组元素有相同的键名时。array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。

二维数组 选择某个字段 作为key 键名: 出处 https://blog.csdn.net/m0_38030271/article/details/80660271
$newArr=array_column($array,NULL,'某个字段');


==========

thinkphp 使用redis 整理(二) mark 一下第1张

==========

赋值:$this->redis->set(‘news:topdata‘,json_encode($data));

取值:json_decode($this->redis->get(‘news: topdata’),true); 数据转换成数组

2.Hash 哈希 类型,一个string 类型的field ,value 的映射表,适合 存储对象(详情页detail时 利用该类型)

注意 :获取多条数据时,hMget; 单条数据时,hGet,例如 上下篇:

Json_decode($this->redis->hGet(‘news:list’,$preno),true); // 上下篇

==========

thinkphp 使用redis 整理(二) mark 一下第2张

==========

删除: $this->redis->del(‘news:list’);// 删除 全部

移除某一条:$this->redis->hDel(‘news:list’, $id); // 注意 hDel 需要传递两个参数

赋值:

多条数据:$this->redis->hMset(‘news:list’,$data);// $data 即查询返回的二维数组

单条数据:$this->redis->hSet(‘news:list’, $id , json_encode($data) );

判断news:list是否有数据可使用:$this->redis->hLen(‘news:list’);

取值:$this->redis->hMget(‘news:list’,$ids);// 返回json 格式

$news =jsonToArray($news);// 转换成 数组

functionjsonToArray($array)

{

return array_map('arrayMapHandler',$array);

}

function arrayMapHandler($v){
$res = json_decode($v,true);
if($res || $v == '[]'){
return $res;
}else{
return $v;
}
}

详情 detail

==========

thinkphp 使用redis 整理(二) mark 一下第3张

==========

赋值:$this->redis->hMset(‘news:detail:’.$id,$detail);// …->field(‘…’)->find();

取值:$this->redis->hMget(‘news:detail:’.$id,[‘id’,’title’,’content’]); //

获取 某个字段的值

$data=$this->redis->hMGet('solution:detail:213',['status']); echo $data['status'];

$stu = $this->redis->hGet('solution:detail:213','status'); echo $stu;

判断detail 是否存在:If(!$this->redis->exists(‘news:detail:’.$id)){// 不存在,此时需要记入redis}

3.ZSET(sorted set :有序集合) 类型,和set 一样也是string类型元素的集合不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。成员是唯一的,但分数 score 却可以重复

==========

thinkphp 使用redis 整理(二) mark 一下第4张

thinkphp 使用redis 整理(二) mark 一下第5张

==========

删除:$this->redis->del(‘news:id’);// 多条

移除某一条:$this->redis ->zRem(‘news:id’, $id);

赋值:

多条数据:

$ids = $model->…->getField(‘order_no,id’);// 返回以 order_no 为key 的数组

$this->redis->zAddArray(‘news:id’, $ids);

$arr = $model->...->field('id,name,sex,sort,....')->order('sort desc')->select();

$data = [];

foreach($arr as $key =>$val){

$arr[$val['sort']] = $val; // 返回 以sort 为主键的数组

}

$this->redis->zAddArray("product:", $data);

单条数据:$this->redis->zAdd(‘news:id’, $cur_orderno, $cur_id);

获取个数 或者 判断news:id是否存在,可使用:$sum = $this->redis->zCard(‘news:id’);// zCard 返回有序集合的成员数

取值: 取新闻为例,分页读取新闻列表数据时

$page = I(‘get.page’,1,’intval’);

$row =10;

$start= ($page-1)*$row;

$end= $start +($row-1);

$ids = $this->redis->zRevRange(‘news:id’,$start,$end);// 返回 有序集中指定区间内成员,通过索引,分数从高到低

【$ids = $this->redis->zRevRange('news:id',0,-1)】 即返回全部

$news = $this->redis->hMget(‘news:list‘, $ids);

$news =jsonToArray($news);

上下篇处理

thinkphp 使用redis 整理(二) mark 一下第6张

zRevRangeByScore:从高到低的分数排序 ,读取范围内的数据 http://blog.csdn.net/chwshuang/article/details/52834380

zRangeByScore:读取范围内的数据

参数:有序集合键名称,max ,min,[WITHSCORES][LIMIT offset count]

+inf和-inf分别表示Sorted-Sets中分数的最大值和最小值

$order_no = $this->redis->zScore('news:id',$id); //返回名称为key的zset中元素 $id 的score

$nextno = $this->redis->zRevRangeByScore('news:id', $order_no, '-inf', ['limit'=>[1,1]] ); // 下一篇

$preno = $this->redis->zRangeByScore('news:id', $order_no, '+inf', ['limit'=>[1,1]] ); // 上一篇

zset 并集zUnion,交集zInter

免责声明:文章转载自《thinkphp 使用redis 整理(二) mark 一下》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Spring boot和Spring cloud对应版本兼容问题Linux 命令-1下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

(转)淘淘商城系列——Redis持久化方案

http://blog.csdn.net/yerenyuan_pku/article/details/72858975 Redis中设置key的过期时间 Redis中的expire命令用于设置key的过期时间,以毫秒计。key过期后将不再可用。Redis中的expire命令基本语法如下: expire key second 设置成功返回1。当key不存在或...

.NET平台常用的框架整理

分布式缓存框架 Microsoft Velocity:微软自家分布式缓存服务框架。 Memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度。 Redis:是一个高性能的KV数据库。它的出现很大程度补偿了Memcached在某些方面的不足。 EnyimMemcached:访问Memcached最优秀的.NET客户端,集成不错的分布...

c# 操作Redis的五种基本类型总结

引言 在我们的大多数项目中,通常会把数据存储到关系型数据库中,比如Oracle,SQL Server,Mysql等,但是关系型数据库对于并发的支持并不是很强大,这样就会造成系统的性能不佳, 而且存储的数据多为结构化数据,对于非结构数据(比如文本)和半结构化数据(比如JSon) 就显得不够灵活,而非关系型数据库则很好的弥补了这两点,  我们通常把读操作频繁...

Redis哨兵参数

一.常用命令 sentinel的基本状态信息INFO 列出所有被监视的主服务器,以及这些主服务器的当前状态SENTINEL masters 列出指定主redis的从节点状态情况SENTINEL slaves <master-name> 列出指定主redis的监控哨兵信息,不包含他自己SENTINEL sentinels <master-n...

springboot实现redis的分布式锁

文章目录 1.redis的应用场景 2.redis的分布式锁 3.通过redisson框架实现redis分布式锁 1.redis的应用场景 商品秒杀 点赞等 现在有一个减少商品的场景,我们很容易能写出其代码 @Controller @ResponseBody public class Test { @Autowired priv...

redis make报错

解压redis后,第一次make出现报错: [root@localhost redis-3.2.5]# make cd src && make allmake[1]: Entering directory `/data/redis/redis-3.2.5/src'rm -rf redis-server redis-sentinel redi...