您的位置:首页 > 新闻 > 资讯 > 初识 Redis

初识 Redis

2024/12/28 15:48:57 来源:https://blog.csdn.net/hj1043/article/details/140009275  浏览:    关键词:初识 Redis

 基础知识网上很多,就不写的太啰嗦,这里纪录一下我的首次使用。

一、redis 安装

在服务器上安装 redis

我的服务器环境是宝塔,方便安装

php 扩展打开 redis

二、项目中的实际应用

首先说明,项目环境是 php

redis 的一些基本操作命令

    //数据操作:// set($key, $value): 设置指定键的值。// get($key): 获取指定键的值。// del($key1, $key2, ...): 删除一个或多个键。// incr($key): 增加键对应的值。// decr($key): 减少键对应的值。// exists($key): 检查键是否存在。// 其他诸如append、strlen、mset、mget等等。// 列表操作:// lpush($key, $value1, $value2, ...): 在列表左侧插入一个或多个值。// rpush($key, $value1, $value2, ...): 在列表右侧插入一个或多个值。// lpop($key): 弹出列表左侧的值。// rpop($key): 弹出列表右侧的值。// llen($key): 获取列表长度。// 其他诸如lindex、lrange、ltrim等等。// hset / hget(设置 / 获取)// hexists(检查是否存在)// hdel(删除)// hkeys(获取所有 field)// hvals (获取所有的 value)// hgetall(获取所有键值对)// hmget(查询指定个 value)// hsetnx(设置值时设置参数)// hash 自增自减处理

redis 初始化

// 初始化 redis 类
$redis = new Redis();
// 打开 redis 连接
$redis->connect('127.0.0.1', 6379);
//TODO:操作// 关闭 redis 连接
$redis->close();

set/get操作

$redis->set('mobile','1331889999'); 
$redis->get('mobile');

Hash 键值对集合操作

项目中需要存储对象,一开始我的考虑是:

mobile作为 key,userinfo 作为 value 存储,对应 get、set的方法就是set(mobile,userinfo),userinfo 需要转为字符串,如php 的 json encode 方法  ,取用户数据的时候得先 jsondecode。

这个方法的弊端是:存取麻烦。

比如说:修改用户的信息,要么整个键值对删除,重新插入,要么把用户信息拿出来解构,修改后再编码再更新。

那有没有更优的方案呢?这时候我注意到了哈希 Hash 键值对集合操作;

1、循环遍历写入

$_POST的数据格式大概长这样:

foreach ($_POST as $val){$mobile = $val['mobile'];$info = json_encode($val);// $redis->set($mobile,$info);// $redis->hset($mobile,'info',$info);// 以 hash 键值对的方式存储foreach($val as $k=>$v){$redis->hset($val['mobile'],$k,$v);}}

2、信息读取

$redis->hget('13712341234','mobile');

这样就可以通过手机号+字段获取信息

3、信息更新

$redis->hset('13712341234','mobile','13312341234');

这样就把手机号是“13712341234”的用户手机号修改为“13312341234”,这样更新操作是不是就便捷的多?(当然手机业务逻辑涉及到手机号变更的,不应该这么改)

因此哈希表比较合适。

还有很多操作,还没用到,后续更新……

    // hexists(检查是否存在)
    
    // hdel(删除)
    
    // hkeys(获取所有 field)
    
    // hvals (获取所有的 value)
    
    // hgetall(获取所有键值对)
    
    // hmget(查询指定个 value)
    
    // hsetnx(设置值时设置参数)
    
    // hash 自增自减处理

三、应用案例

3.1 GET请求:返回最后一个用户 id

从列表“userid”左边获取第一个数值(如下表示例)

userid 列表
 如此类推
最大的 id 在左侧
87654321

3.2 POST 请求:接收总库传来的消息

需要做两个动作:

1、用户数据以哈希键值对的方式存储;

2、用户 id 单独存列表“userid”,并且从左边插入数据(返回的 id 必须按照顺序 asc排序,即最后一个 id 是最大的 id);

// 备注:下面用到方法,判断请求类型是封装过的函数,非原生 php 写法
public function redis(){$redis = new Redis();$redis->connect('127.0.0.1', 6379);// GET请求:返回用户maxidif(is_get()){// 列表origin_uid左边第一个数值$user = $redis->lindex('userid',0);print_r($user);}// POST请求:接收数据,用户id必须是顺序排序,依次从左侧插入列表if(is_post()){print_r($_POST);// return json($_POST);if($_POST){$count = 0;foreach ($_POST as $val){$mobile = $val['mobile'];$info = json_encode($val);// $redis->set($mobile,$info);// $redis->hset($mobile,'info',$info);// 以 hash 键值对的方式存储foreach($val as $k=>$v){$redis->hset($val['mobile'],$k,$v);}// 把用户原始 id 写入到集合里面,方便查询最后同步到那个客户。$redis->lpush('userid',$val['id']);  // 以列表lpush方式存储(加在列表左边)$count ++;}if($count>0){return json('redis存下了'.$count.'条数据');}else{return json();}}}// 关闭连接$redis->close();}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com