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

相关文章

来自专栏芋道源码1024

熔断器 Hystrix 源码解析 —— 断路器 HystrixCircuitBreaker

本文主要基于 Hystrix 1.5.X 版本 1. 概述 2. HystrixCircuitBreaker 3. HystrixCircuitBreaker....

5297
来自专栏落花落雨不落叶

canvas画简单电路图

61711
来自专栏闻道于事

js登录滑动验证,不滑动无法登陆

js的判断这里是根据滑块的位置进行判断,应该是用一个flag判断 <%@ page language="java" contentType="text/html...

6798
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3135
来自专栏C#

DotNet加密方式解析--非对称加密

    新年新气象,也希望新年可以挣大钱。不管今年年底会不会跟去年一样,满怀抱负却又壮志未酬。(不过没事,我已为各位卜上一卦,卦象显示各位都能挣钱...)...

4878
来自专栏跟着阿笨一起玩NET

c#实现打印功能

2762
来自专栏陈仁松博客

ASP.NET Core 'Microsoft.Win32.Registry' 错误修复

今天在发布Asp.net Core应用到Azure的时候出现错误InvalidOperationException: Cannot find compilati...

4848
来自专栏我和未来有约会

Silverlight第三方控件专题

这里我收集整理了目前网上silverlight第三方控件的专题,若果有所遗漏请告知我一下。 名称 简介 截图 telerik 商 RadC...

4025
来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

2536
来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2577

扫码关注云+社区