字符串类型简介
字符串类型是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