0

0

从零入手Redis缓存

不言

不言

发布时间:2018-06-04 09:48:58

|

1877人浏览过

|

来源于php中文网

原创

这篇文章主要介绍了关于从零入手Redis缓存,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

  1. Redis介绍

redis是一个开源的使用ansi c语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的api。从2010315日起,redis的开发工作由vmware主持。从20135月开始,redis的开发由pivotal赞助。

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)list(链表)set(集合)zset(sorted set --有序集合)hash(哈希类型)。这些数据类型都支持push/popadd/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了JavaC/C++C#PHPJavaScriptPerlObject-CPythonRubyErlang等客户端,使用很方便。 [1] 

Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

redis的官网地址,非常好记,是redis.io。(特意查了一下,域名后缀io属于国家域名,是british Indian Ocean territory,即英属印度洋领地)

目前,Vmware在资助着redis项目的开发和维护。

2. Redis的安装

解压安装文件

解压好了后

执行make进行编译

编译ok、

进入src目录


Redis-cli 终端操作

Redis-server 启动redis服务的文件

Redis-benchmark压力测试文件

Redis-check-xx 检车备份文件脚本

创建Redis运行目录,并拷贝两个运行文件过去

拷贝配置文件过去

 

3. 启动Redis服务

前端启动redis服务成功的标志

./redis-server

 

这时有个问题,当前启动的是不能关的,一关就没了,所以需要进行修改

停止服务Ctrl+z

先停止掉redis服务

使用后台来启动redis服务

vim redis.conf

改成yes保存,设置后台启动redis

再次启动

发现还是前端启动

启动的时候带上配置文件一起启动

查看下redis进程

发现redis已经启动

4. 简单使用

设置了三个变量,这三个变量都存储在内存中

如何读取?

Get!

5. 具体操作

1.  Key的操作

在redis里面,出了“\n”和空格 不能作为名字的组成内容外,其他内容都可以作为key的名字部分,名字长度不做要求

换句话来说,就是变量名称

代码

作用

Exists key

是否存在

Del key1 key2 ….

删除指定的key

Type key

返回给定的key的value类型

Key pattern

返回匹配指定模式的所有的key

Rename oldkey newkey

改名字

Dbsize

返回当前数据库的key的数量

Expire key seconds

为key指定过期时间

Ttl key

返回key的过期秒数

Select db-index

选择数据库

Move key db-index

将key从当前数据库移动到指定数据库

Flushdb

删除当前数据库中所有的key

Flushall

删除所有数据库中的所有key


 

这里举例了一个的使用

2.  String类型的操作

String是redis最基本的类型

Redis的string可以包含任何数据,包括jpg图片或者序列化对象

单个value值最大上限是1G字节

代码

作用

Set key value

设置key对应的值为string类型的value

Mset key1 value1…keyN valueN

一次设置多个key的值

Mget key1 key2 … keyN

一次获取多个key的值

Incr key

对key的值做++操作

Decr key

同上 –操作

Incrby key integer

同incr 加指定值

Decrby key integer

同decr 减指定值

Append key value

给指定key的字符串追加value

Substr key start end

返回截取过的key的字符串值

 

 

3.  List链表类型的介绍和使用

List类型其实是一个双向链表

如果想要查询前10个最新的用户,

要一个个查,太消耗资源

List链表示例图:

通过list链表保存登陆系统的最新5个用户信息

新用户进来,旧的用户踢出

链表该如何操作?

代码

作用

Lpush key  string

Difeye-敏捷的轻量级PHP框架
Difeye-敏捷的轻量级PHP框架

Difeye是一款超轻量级PHP框架,主要特点有: Difeye是一款超轻量级PHP框架,主要特点有: ◆数据库连接做自动主从读写分离配置,适合单机和分布式站点部署; ◆支持Smarty模板机制,可灵活配置第三方缓存组件; ◆完全分离页面和动作,仿C#页面加载自动执行Page_Load入口函数; ◆支持mysql,mongodb等第三方数据库模块,支持读写分离,分布式部署; ◆增加后台管理开发示例

下载

在key对应list的头部添加字符串元素

Rpop key

从list的尾部删除元素,并返回删除元素

Lien key 返回 key

对应list的长度,key值不存在返回0,如果key对应类型不是list返回错误

Rpush key  string

同上,在尾部添加

Lpop key

从list的头部删除元素,并返回删除元素

Ltrim key  start end

截取list,保留指定区间内的元素


4.  Set集合类型

Redis的set是string类型的无序集合。

Set元素最大可以包含(2的32次方-1)个元素

每个集合中的各个元素不能重复

代码

作用

Sadd key  member

添加一个string元素到key对应的set集合中,返回成功1

Srem key member

从key对应·set中移除给定元素,成功返回1

Smove p1 p2  member

从p1对应set中移除member并添加到p2对应set中

Scard key

返回set的元素个数

Sismember key  member

判断member是否存在set中

Sinter key1 key2.。。。

返回所有给定key的交集

Sunion key1  key2

返回所有给定key的并集

Sdiff key1 key2.。

返回所有给定key的差集

Smembers key

返回key对应set的所有元素,结果是无序的


 

里面有一个key五个元素

接着又添加一个Linken

 

5.  SortSet排序集合类型操作

和set一样,sorted set 也是string元素的集合

不同的是,每个元素都会关联一个权

通过权值可以有序的获取集合中的元素

案例:

利用sort set实现获取最热门的前5帖子学习

排序集合中的每个元素都是值,权的组合

代码

作用

Zadd key  score member

添加元素到集合,元素在集合中存在则更新对应score

Zrem key  member

删除指定元素,1成功,0不存在

Zincrby key incr  member

按照incr幅度增加对应member的score值,返回score值

Zrank key member

返回指定元素在集合中的排名(下标),集合中元素是安score从小到大排序的

Zrange key  start end

类似Irange操作从集合中指定区间的元素,返回的是有序结果

Zrevrange key start  end

同上,返回是逆序的

Zcard key

返回集合中元素个数

Zscore key elemet

返回给定元素对应的score

Zremrangebyrank  key min max

删除集合中排名在给点区间的元素


6.  快照持久化

900秒一个Key变化就(快照)保存

300秒十个key变化就(快照)保存

一分钟一万个key变化就(快照)保存

这样控制的好处:

      数据修改的频率非常高,备份的频率也高,

       数据修改的频率低,备份的频率也低。

 

快照持久化保存的名字

 



手动发起快照持久化

如果对本机:

7.  AOF持久化

本质:把用户执行的每个“写”指令(添加,删除,修改)都备份到文件中,还原的时候执行具体的“写“指令

开启AOF持久化会清空redis内部数据

开启AOF持久化

配置文件被修改 重启服务

查看redis进程:Ps –A | grep redis

-9强制杀死进程

启动一个新的进程

 

 

Aof追加持久化的备份频率

 

Always 每次收到写指令就立刻强制写入磁盘,很慢,但能保持完全的持久化

Everysec 每秒强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐

No 完全依赖OS 性能最好,持久化没保证

8.  主从模式

为了降低每个redis服务器的负载,可以设置几个,并作主从模式

一个服务器负载“写“

其他服务器负载“读”

主服务器会 自动 同步给从服务器


修改IP地址和端口号

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

150

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

88

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

90

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

61

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

493

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

16

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

12

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

5

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

Redis+MySQL数据库面试教程
Redis+MySQL数据库面试教程

共72课时 | 6.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号