实例讲解redis字符串类型

字符串类型简介

字符串类型是Redis中最基本的数据类型,能存储任何形式的字符串

字符串类型

相关命令

命令 行为
GET key 获取值
SET key value 设置值
DEL key 删除值(此命令可用于所有类型)
GETSET key value 将key值设为value,返回旧值
APPEND key value 将value追加到key原来的值末尾
GETRANGE key start end 截取子字符串
INCR key 当值为数字时,每次递增1
INCRBY key increment 增加指定的整数
INCRBYFLOAT key increment 增加浮点数
DECR key 当值为数字时,每次递减1
DECRBY key decrement 减少指定的整数
MGET key [key...] 返回一个或多个key的值
MSET key value [key value ...] 同时设置一个或多个 key-value 对
MSETNX key value [key value ...] 当key都不存在时,设置多个key-value对
SETEX key seconds value 将值 value 关联到 key,生存时间以秒为单位
PSETEX key milliseconds value 以毫秒为单位
SETNX key value 将 key 的值设为 value ,当且仅当 key 不存在
SETRANGE key offset value 替换给定字符串
STRLEN key 返回 key 所储存的字符串值的长度。

了解更多相关命令

redis-cli

[senlong@linux ~]$ redis-cli
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> get hello
(nil)

phpredis

class StringType extends Base
{
    public function get($key='name') {
        echo $this->redis->get($key);
    }

    public function set(Request $request, $key, $value) {
        if ($key && $value) {
            $this->redis->set($key, $value);
            echo '设置成功';
        }
    }

    public function del(Request $request, $key='name') {
        $this->redis->del($key);
    }

    public function incr($key) {
        $this->redis->incr($key);
        echo $this->redis->get($key);
    }
}

实践

需求:用redis实现统计博客文章的阅读数量

  • 写入文章

将文章键名命名为 post:id:data (类型:id:属性) 是出于惯例,便于理解。如 post:12:data 表示:第12篇文章的内容

public function setPost() {
    $title = '标题-';
    $content = '内容-';
    $time = date('Y-m-d H:i:s', time());
    // 获取文章自增id
    $postId = $this->redis->incr('posts:count');
    $postData = $title . $content . $time;
    // 写入文章
    $this->redis->set("post:{$postId}:data", $postData);
}
  • 获取文章并统计阅读数量

post:{$id}:page.view 表示文章阅读数,多个单词用 . 相连。如page.view即为page与view相连

/**
 * 每次刷新该方法,阅读数都加1
 * @author zhongsenlong 2017-07-23
 * @param  Request $request [description]
 * @param  integer $id      [description]
 * @return [type]           [description]
 */
public function getPost(Request $request, $id=1) {
    $postData = $this->redis->get("post:{$id}:data");
    if ($postData) {
        echo $postData;
        echo "<br />";
        // 文章阅读次数+1
        $pageView = $this->redis->incr("post:{$id}:page.view");
        echo "该文章被阅读了{$pageView}次";
    } else {
        echo '无此文章';
    }
}

源码下载

源码下载地址

示例代码路径:thinkphp5\application\redis\controller\StringType.php

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 网站推荐 redis在线尝试与教程 redis中文官网 《Redis入门指南》 《Redis 设计与实现》 Red...
    treelake阅读 67,001评论 0 29
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,739评论 18 399
  • 先来介绍一下我 175厘米 120斤的大个子 ,成天晃晃悠悠 ,被叫傻大个 ,学习不好 啥也不会 ,自己还成...
    crisy_張阅读 276评论 0 0
  • 如果一个人觉得自己很了不起到任何地方都觉得自己高高在上,看不起别人,无论是在婚姻上,还是在事业上,看不起男人还是女...
    Janice1阅读 246评论 0 0
  • “断舍离”,这三个字我很早就听到了,但是由于自身的惰性和拖延症,我都没有去身体力行,在遇到无尘大师之后,我才开始践...
    善护念之合一阅读 907评论 4 9