实例讲解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 条评论
登录 后参与评论

相关文章

来自专栏Laoqi's Linux运维专列

详细介绍5种Redis常用数据类型操作

1815
来自专栏fixzd

redis系列:通过通讯录案例学习hash命令

这一篇文章将讲述Redis中的hash类型命令,同样也是通过demo来讲述,其他部分这里就不在赘述了。

671
来自专栏后台架构

Sphinx源码学习笔记(一):索引创建

  因为项目开发需要在游戏内部实现玩家名称的模糊查找功能,本身直接使用Sphinx配置mysql可以直接搭建一套模糊匹配的即可支持功能的实现。

3037
来自专栏码神联盟

【原创】MongoDB之常见操作命令汇总

mongodb由 C++ 写就,其名字来自humongous这个单词的中间部分,从名字可见其野心所在就是海量数据的处理。关于它的一个最简洁描述为:sca...

3567
来自专栏玩转JavaEE

Redis字符串(STRING)中BIT相关命令

上篇文章我们对STRING数据类型中一些基本的命令进行了介绍,但是没有涉及到BIT相关的命令,本文我们就来看看几个和BIT相关的命令。 本文是Redis系列的第...

3398
来自专栏互扯程序

你现在还在手动生成set,get方法吗?

JAVA面向对象编程中的封闭性和安全性。封闭性即对类中的域变量进行封闭操作,即用private来修饰他们,如此一来其他类则不能对该变量访问。这样我们就将...

1636
来自专栏SDNLAB

【一课专栏】解构1 - 起底QName

QName是Qualified Name的缩写,中文翻译为限定名,可理解为full name。QName来源于XML, 由XML的名字空间和 XML元素名称组成...

1522
来自专栏偏前端工程师的驿站

Java魔法堂:找外援的利器——Runtime.exec详解

一、前言                                  Java虽然五脏俱全但总有软肋,譬如获取CPU等硬件信息,当然我们可以通过JNI调用...

18910
来自专栏IT杂记

通过Java程序提交通用Mapreduce无法回收类的问题

问题描述 上次发布的博客 通过Java程序提交通用Mapreduce,在实施过程中发现,每次提交一次Mapreduce任务,JVM无法回收过程中产生的MapRe...

2876
来自专栏全栈之路

关于tomcat读取文件出现乱码的问题

以前只知道需要在web.xml里面配置filter,今天发现了一个致命的问题,就是tomcat运行时读取文件出现中文乱码,本地运行main函数却又没有乱码。

1304

扫码关注云+社区