redis基础入门

:感觉介绍的浅显易懂,所以推荐

What is Redis?

Redis是 Salvatore Sanfilippo 开发的,开源的,高效的基于内存的键值缓存服务,所谓的NoSQL数据库 。它可以存储 strings, hashes, lists, sets, sorted sets等结构的数据。

键值存储的实质是能够存储数据,而且在之后调用具体的键名,可以检索出之前插入的数据。

Usage of Redis

Salvatore Sanfilippo (creator of Redis) 说Redis 能够被用于替代RDBMS数据库,现在想想,尽管没有什么是不可能的,但是它仍然是一个欠妥的想法。因为Redis在数据的事务操作,以及主从服务的数据同步上还不是很完善。

以下是Redis使用的地方,尽管还有好多地方可以用到:

  • 有跟 memcached一样的缓存功能,并且支持各种数据结构。丰富的存储方式会省去好多Array的拼接,提高性能
  • Leaderboards or related problems.
  • Counting stuff.
  • Real time analysis.
  • Deletion and filtering.
  • 在你的首页显示最新的项目

Aim of this Article

文章并不是去展示给你 Redis的语法知识 , 而是在PHP中怎么去使用Redis

Install Redis

Redis很容易去安装,包括Windows和Linux

Install Redis on Linux

安装Redis:

$ wget http://download.redis.io/releases/redis-2.8.19.tar.gz
$ tar xzf redis-2.8.19.tar.gz
$ cd redis-2.8.19
$ make

Note: 2.8.19 请替换成最新版本

Redis的服务启动都位于安装目录下src目录下,包括redis-cli, 用于Redis的客户端操作,下面是启动Redis服务。

$ src/redis-server

Install on Windows

暂不介绍

Install Predis a Redis Client for PHP

Predis 是Redis的一个客户端. 它被社区支持,GitHub上直接下载就可以,下图安装了GitHub客户端或者Git软件,进行下载

$ git clone git://github.com/nrk/predis.git

Connecting to Redis

首先,我们 require Redis 的自动加载函数. 之后使用try语句块包裹。以下是连接本地以及远程服务的地址,在虚拟机中安装的服务,请按照远程的配置进行。host使用ifconfig查看,默认的端口是6379.

<?ph
require "predis/autoload.php";
Predis\Autoloader::register();

try {
	$redis = new PredisClient();

	// This connection is for a remote server
	/*
		$redis = new PredisClient(array(
		    "scheme" => "tcp",
		    "host" => "153.202.124.2",
		    "port" => 6379
		));
	*/
}
catch (Exception $e) {
	die($e->getMessage());
}

现在我们已经成功的连接了Redis服务器,马上开始学习

Redis Datatypes

Redis使用了丰富的数据类型,可以帮助开发者存储更有意义的数据结构,或者说更接近真实的数据,让检索变得更加高效。下面是Redis支持的数据类型:

  • String:
    字符串,类似于memcache
  • List:
    类似于一维数组。 可以使用 push, pop, shift and unshift等方法
  • Hash:
    Map用于存储多个键值对。
  • Set:
    无序的,不重复的
  • Sorted Set:
    有序的,不重复的。你一定想知道它怎么能有序: 在存储的时候需要指定一个score值,用于排序,从最小到最大,而且可以相等。

Getters and Setters

在Redis中,最重要的命令可能属  SETGET and EXISTS.
这些命令用于去从Redis服务器存储,获取,检查。Redis的操作就跟命令要表达的字面意思是一样的。

<?php
// sets message to contian "Hello world"
$redis->set(‘;message‘;, ‘;Hello world‘;);

// gets the value of message
$value = $redis->get(‘message‘);

// Hello world
print($value); 

echo ($redis->exists(‘message‘)) ? "Oui" : "please populate the message key";

Increments and Decrements

INCR and DECR
命令被用于去增加或减少值

<?php
$redis->set("counter", 0);

$redis->incr("counter"); // 1
$redis->incr("counter"); // 2

$redis->decr("counter"); // 1

当然,你也可以指定增加的具体值,使用 INCRBY and DECRBY命令

<?php
$redis->set("counter", 0);

$redis->incrby("counter", 15); // 15
$redis->incrby("counter", 5);  // 20

$redis->decrby("counter", 10); // 10

Working with Lists

这里还有基本的一些命令

  • LPUSH:
    插入数据到list的开头
  • RPUSH: 插入数据到list的末尾
  • LPOP: 移除list开头的元素并返回该元素
  • RPOP: 移除list末尾的元素并返回该元素
  • LLEN:
    获得list的长度
  • LRANGE:
    获得list中所有的元素

Simple List Usage:

<?php
$redis->rpush("languages", "french"); // [french]
$redis->rpush("languages", "arabic"); // [french, arabic]

$redis->lpush("languages", "english"); // [english, french, arabic]
$redis->lpush("languages", "swedish"); // [swedish, english, french, arabic]

$redis->lpop("languages"); // [english, french, arabic]
$redis->rpop("languages"); // [english, french]

$redis->llen("languages"); // 2

$redis->lrange("languages", 0, -1); // returns all elements
$redis->lrange("languages", 0, 1); // [english, french]

Working with Hashes

hash 是一了键值对的集合,类似于一对多的关系.常用的命令有:

  • HSET: 设置一个key-value值
  • HGET: 获取hash中key的值
  • HGETALL:
    返回hash中所有的值
  • HMSET:
    设置hash多个值
  • HDEL:
    从hash中删除一个值
  • HINCRBY:
    给hash中元素增加一个指定值
<?php
$key = ‘linus torvalds‘;;
$redis->hset($key, ‘age‘;, 44);
$redis->hset($key, ‘country‘;, ‘;finland‘;);
$redis->hset($key, ‘occupation‘, ‘software engineer‘);
$redis->hset($key, ‘reknown‘, ‘linux kernel‘);
$redis->hset($key, ‘to delete‘, ‘i will be deleted‘);

$redis->hget($key, ‘age‘); // 44
$redis->hget($key, ‘country‘)); // Finland

$redis->del($key, ‘to delete‘);

$redis->hincrby($key, ‘age‘, 20); // 64

$redis->hmset($key, [
    ‘age‘ => 44,
    ‘country‘ => ‘finland‘,
    ‘occupation‘ => ‘software engineer‘,
    ‘reknown‘ => ‘linux kernel‘,
]);

// finally
$data = $redis->hgetall($key);
print_r($data); // returns all key-value that belongs to the hash
/*
    [
        ‘age‘ => 44,
        ‘country‘ => ‘finland‘,
        ‘occupation‘ => ‘software engineer‘,
        ‘reknown‘ => ‘linux kernel‘,
    ]
*/

Working with Sets

set相关的命令:

SADD:
给set增加N个成员,数组或者单个元素

SREM:
从数组中移除单个或者一个成员

SISMEMBER:
判断成员是否存在

SMEMBERS:
获取set中所有成员

<?php
$key = "countries";
$redis->sadd($key, ‘;china‘;);
$redis->sadd($key, [‘england‘, ‘france‘, ‘germany‘]);
$redis->sadd($key, ‘china‘); // this entry is ignored

$redis->srem($key, [‘england‘, ‘china‘]);

$redis->sismember($key, ‘england‘); // false

$redis->smembers($key); // [‘france‘, ‘germany‘]

Set Expiry and Persistence

因为Resia在内存中存储,你可能并不像永久存储,就比如我之前的介绍Node创建session的文章. 这里可以设置过期的方法有 EXPIREEXPIREATTTLPERSIST – 

EXPIRE:
以秒为单位,设置过期时间

EXPIREAT:
过多久之后被删除,以秒为单位

TTL:距离过期还剩多少时间

PERSIST:让一个键永久保存

$key = "expire in 1 hour";
$redis->expire($key, 3600); // expires in 1 hour
$redis->expireat($key, time() + 3600); // expires in 1 hour

sleep(600); // don‘t try this, just an illustration for time spent

$redis->ttl($key); // 3000, ergo expires in 50 minutes

$redis->persist($key); // this will never expire.

CONCLUSION

后悔中......花了30分钟,翻译了这么一篇没水平的文章,也不知道自己是怎么想的。越想越不对,但是既然翻译了,就翻译完了,里面可能有翻译的不对的地方,或者代码错误的地方,那都不是问题,掠过就可以。

Future of Redis

Redis is a better replacement for memcached, as it is faster, scales better (supports master-slave replication), supports datatypes that many (Facebook, Twitter, Instagram) have dropped memcached for Redis. Redis is open source and many brilliant programmers
from the open-source community have contributed patches.

时间: 2024-10-13 17:01:02

redis基础入门的相关文章

REDIS基础笔记

Redis基础笔记 资源链接 简介 简介 安装 五种数据类型及相应命令 1. 字符串类型 2. 散列类型 3. 列表类型 4. 集合类型 5. 有序集合 其他 事务 SORT 生存时间 任务队列 发布/订阅模式 Python中使用Redis 实际实例 管理 其他 资源链接 推荐书籍:<Redis入门指南> 资源列表: redis命令速查command | CMD索引-中文 | CMD树-中文 redis源码github 下载地址redis.io The Little Redis book 入口

Redis快速入门及实现

redis的概念 (1)Redis的优点 以下是Redis的一些优点. 异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作. 支持丰富的数据类型 - Redis支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等等.这使得Redis很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决. 操作具有原子性 - 所有Redis操作都是原子操作,这确保如果两个客户端并发访问,Red

超强、超详细Redis数据库入门教程

这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用redis4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 – 简介8.redis数据结构 – strings9.redis数据结构 – lists10.redis数据结构 – 集合11.redis数据结构 – 有序集合12.redis数据结构 – 哈希13.聊聊

转: Redis基础总结

转文:http://blog.csdn.net/basycia/article/details/52175429 1.redis是什么 2.redis的作者何许人也 3.谁在使用redis 4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 – 简介8.redis数据结构 – strings9.redis数据结构 – lists10.redis数据结构 – 集合11.redis数据结构 – 有序集合12.redis数据结构 – 哈希13.聊聊redis持久

零基础入门学习java,应该如何快速打好Java基础?

零基础入门学习java,应该如何快速打好Java基础?从大学到现在,我使用Java已经将近20年,日常也带实习生,还在公司内部做training,所以可以分享下我的经验,希望对你有用. 创一个小群,供大家学习交流聊天如果有对学java方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学java能够持之以恒java爱好群,如果你想要学好java最好加入一个组织,这样大家学习的话就比较方便,还能够共同交流和分享资料,给你推荐一个学习的组织:快乐学习java组织

2019刘老师教你用springboot2.x开发整合微信支付的线上教育平台带源码送springboot2.x零基础入门到高级实战教程

第一部分:springboot2.x零基础入门到高级实战教程一.零基础快速入门SpringBoot2.0 1.SpringBoot2.x课程全套介绍和高手系列知识点 简介:介绍SpringBoot2.x课程大纲章节 java基础,jdk环境,maven基础 2.SpringBoot2.x依赖环境和版本新特性说明 简介:讲解新版本依赖环境和springboot2新特性概述 3.快速创建SpringBoot2.x应用之手工创建web应用 简介:使用Maven手工创建SpringBoot2.x应用 4

Mongodb最基础入门教程

Mongodb最基础入门教程 如果想了解一下redis的入门教程,可以去看一下我的上一篇博客 Mongodb的安装大家可以参考一下其他博主的博客,这里我就不做介绍了.不过值得注意的是,在Linux版本中如果启动mongodb的时候出现下面这个错误(在windows版本中不会出现下面的问题): mongod: /usr/lib/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by mongod) 原因是因为mongodb启动需要

【转】redis数据库入门教程(全面详细)

[本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用redis4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 – 简介8.redis数据结构 – strings9.redis数据结构 – lists10.redis数据结构 – 集合11.redis数据结构 – 有序集合12.redis数据结构 – 哈希13.聊聊redis持久化 – 两种方式14.聊聊redis持久化 – RDB15.聊聊redis持久化 – AOF16.聊聊r

Android基础入门教程——10.12 传感器专题(3)——加速度-陀螺仪传感器

Android基础入门教程--10.12 传感器专题(3)--加速度/陀螺仪传感器 标签(空格分隔): Android基础入门教程 本节引言: 本节继续来扣Android中的传感器,本节带来的是加速度传感器(Accelerometer sensor)以及 陀螺仪传感器(Gyroscope sensor),和上一节的方向传感器一样有着x,y,z 三个轴, 还是要说一点:x,y轴的坐标要和绘图那里的x,y轴区分开来!传感器的是以左下角 为原点的!x向右,y向上!好的,带着我们的套路来学本节的传感器吧