专栏首页coding实例讲解redis字符串类型

实例讲解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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Laravel 限制条数后再分页

    laravel 自带开箱即用的分页,使用起来如丝般顺滑。默认情况下是对所有记录进行分页,现在我们有这样的需求:限制用户只能看到前 30 页。第一想法就是用 li...

    章鱼喵
  • 实例讲解redis的hash散列类型

    章鱼喵
  • 哲思录第001篇

    那些看过的书,现在脑中只剩下一些浮光掠影,就如同看过多年的电影,只记得几句台词,几个画面。

    章鱼喵
  • 【JDK1.8】JDK1.8集合源码阅读——总章

      今天开始阅读jdk1.8的集合部分,平时在写项目的时候,用到的最多的部分可能就是Java的集合框架,通过阅读集合框架源码,了解其内部的数据结构实现,能够深入...

    joemsu
  • Spring Boot整合Redis代码详解,四步搞定!

    今天主要讲解Springboot整合Redis。Redis是目前使用最多的缓存,包括Spring Boot 中我们也是会用Redis做很多事情。那么今天就来说一...

    架构师精进
  • 小王,在 Java 中如何利用 redis 实现一个分布式锁服务呢???

    在现代的编程语言中,接触过多线程编程的程序员多多少少对锁有一定的了解。简单的说,多线程中的锁就是在多线程环境下,多个线程对共享资源进行修改的时候,保证共享资源一...

    趣学程序
  • Redis笔记(三):Redis常用命令

    启动 redis 客户端,打开终端并输入命令 redis-cli。该命令会连接本地的 redis 服务。

    朝雨忆轻尘
  • Redis 初步接触

    Redis是一个开源的,使用ANSI C 编写,高性能的Key-Value的NoSQL数据库。

    Carlos Ouyang
  • 手把手教你实现一个基于 Java 的分布式锁服务

    编辑:业余草 来源:https://www.xttblog.com/?p=4994

    业余草
  • Redis 删除1.2亿指定前缀的key

    因为更换IDC的原因,我们需要迁移缓存到新的机房,开发同学提出老的缓存有1.2亿无效(未设置过期时间)的key和正常在用的业务key,在迁移之前可以先指定前缀将...

    用户1278550

扫码关注云+社区

领取腾讯云代金券