REDIS学习课堂笔记_第1页
REDIS学习课堂笔记_第2页
REDIS学习课堂笔记_第3页
REDIS学习课堂笔记_第4页
REDIS学习课堂笔记_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、REDIS一 什么是redis1 redis简介2 redis能干什么二 编译安装三 redis怎么用 1 简单使用2 redis的数据结构四 用php操作REDIS五 其它一 什么是REDIS1.1 简介Redis 是由意大利人 antirez 开发的一款 内存高速缓存数据库,它的数据模型为 key-value。它支持丰富的数据结构,比如 String list hash set sorted set。并且可持久化,保证了数据安全。优势:1 、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。2 、Redis支持数据的备份,即mast

2、er-slave(主从)模式的数据备份。3 、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。Redis 端口 6379 对应 老式手机 上的 merz 这个是一个意大利歌女的名字简称。12 redis能干什么1 提高数据读写效率,作为数据缓存。对数据库有大量读写的,比如sns社区 复杂的好友关系存储。2计数器。INCR count 3 实现一个 防攻击系统。用一个set 存储所有异常IP,当下一个请求到达,取出ip 看是否在这个集合里,做出相应的操作。4 TOP 10。采用 sorted set 排序的集合,将新闻评论的赞同数作为集合元素的权重,取

3、出某个新闻最热的前10条评论。同样的 新浪微博 今日热点排行榜,也可以用redis的排序集合来实现。二 拥有一个redis 编译安装 Redis也是一种C/S 架构的服务首先编译安装linux上的服务端和客户端:1 下载: 上传到linux 并解压2 进入redis源码目录直接 # make 即可可能会出现错误如下:注意:make之前要检查一下自己处理器的型号# uname m 显示 i686 这和自己装的系统型号不匹配解决办法:加一个参数 CFLAGS=”-march=i686” 即可# make CFLAGS=”-march=i686” 错误即可解决编译完成之后 在源码目录下的 src目录

4、里会生成以下几个可执行文件:Redis-benchmark 压力测试Redis-check-aof 检查redis持久化命令文件的完整性Redis-check-dump 检查redis持久化数据文件的完整性Redis-cli redis在linux上的客户端Redis-sentinel 做集群用的Redis-server linux上的服务端3 将redis源码目录下的 src目录里的 redis-cli和 redis-server 拷贝到工作目录里.同时将源码跟目录下的redis.conf 也拷贝到工作目录里#cp redis-cli redis-server /usr/local/webs

5、erver/redis/至此在linux上编译安装redis服务端和客户端已经大功告成。在window上 首先下载 直接将压缩包 解压即可。根据自己系统情况。5 配置redis-server配置文件各参数含义1 daemonize no /redis进程运行方式,默认为”no” 不是以守护进程的方式运行,可以通过该配置项修改,使用”yes”启用守护进程2 pidfile pidfile /var/run/redis.pid /当redis以守护进程方式运行时,通过pidfile指定进程pid文件目录,比如3 port 6379 /指定Redis监听端口,默认端口为63794 bind 127.

6、0.0.1 /绑定的主机地址5 timeout 300 /当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能6 loglevel verbose /指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose7 logfile stdout /日志记录方式,默认为标准输出,此处可以配置为 日志文件目录,比如 logfile /var/logs/redis.log8 save <seconds> <changes> /将数据同步到数据文件频率 默认有三个配置save 900 1 save 300 1

7、0 save 60 10000分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改,就将数据更新到数据文件9 dbfilename dump.rdb /指定本地数据库文件名,默认值为dump.rdb10 slaveof <masterip> <masterport> /设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步11 maxclients 128 /设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可

8、以打开的最大文件描述符数,如果设置maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息12 maxmemory <bytes>指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区13 appendonly no /更新日志记录appe

9、ndfilename appendonly.aof /更新日志文件名 appendfsync everysec /共三个值 no always everysec(默认值)14 include /path/to/local.conf /指定包含其它的配置文件其它更详细配置: 3 怎样用redisredis在线入门 : http:/try.redis.io/redis 中文资料站: redis 命令手册: 3.1简单的使用演示3.2 redis丰富的数据结构Redis数据存储:两种数据持久化方式 是由配置文件 redis.conf决定的。Save 参数配置 以数据文件的形式持久化内存中的数据到磁盘

10、上Appendonly 参数配置 记录所有对内存数据有修改的命令 到磁盘上作者称redis是一种数据结构服务器,因为它支持丰富的数据结构 string list set sorted set hash。 另外,还支持消息订阅与发布 pub/subRedis里面所有的数据都是 key value 键值对Key 键:Key 基本操作:DEL EXISTS P/EXPIRE P/EXPIREAT KEYS RENAME SORT TYPE TTL PTTL OBJECT MOVEDEL key key .set name “niusipeng” expire name 30 Keys *a* key

11、s n? Keys *SORT 列表、集合、有序集合 根据key对应的值进行排序 SORT key DESC(降序)TTL 返回给定 key 的剩余生存时间,单位秒OBJECT REFCOUNT(引用次数)/ ENCODING(内部编码)/ IDLETIME(空置时间 秒) keyMOVE name 1 将当前数据库 key为name的数据移动到 1号数据库STRING最基本的数据类型基本操作:GET SET INCR DECR MSET MGET STRLEN APPENDset name “niusipeng” EX/PX 100mset date "2012

12、.3.30" time "11:00 a.m." weather "sunny“查看剩余时间: TTL (秒) PTTL(毫秒)append name “ is a man”GETSET 类似 return num +;LISTList 是一个 每个元素都是string类型的双向链表 单向链表:单向链表的一个元素 Data尾指针下面是一个单向链表示意图:DataDataDataDataList1 :Data下面是一个双向链表示意图:下面是双向链表的一个元素头指针 Data尾指针DataDataDataDatalist2 Dataredis为什么要用 双向

13、链表 而不是 数组或者单向链表 因为: 数组 虽然查找效率非常高,但是插入或者删除一个元素效率很低单向链表 虽然插入或者删除一个元素效率高,但是 查找 前一个元素 效率低LIST 基本操作: L/RPUSH L/RPOP LSET LLEN LSET LRANGE RPOPLPUSHLPUSH mylist a b c /注意结果顺序 c b aLSET key index value /将列表 key 下标为 index 的元素的值设置为 value LRANGE key start stop / lrange mylist 0 -

14、1 取出所有RPOPLPUSH sourceKey destinationKey 在一个原子时间内,执行以下两个动作:将列表 source 中的最后一个元素弹出,并返回给客户端。将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。SETA 1 2 stringPhp集合的基本操作SADD bbs "" "“SPOP key /移除并返回集合中的一个随机元素SREM key member member . /移除集合 

15、key 中的一个或多个 member 元素SDIFF key key . /返回所有给定集合之间的差集Sinter key1 key2 /返回两个集合的交集Sunion key1 key2 /返回两个集合的并集典型的应用场景 就是 微博 共同好友 或者共同关注排序的集合 sorted set 排序的集合里每个元素都有一个权重标记 叫 scoreZadd zadd site 10 20 ZADD key score member score member score member .Zrange site 0 -1 WITHSCORESHASH要存储一个学生(200

16、31011)的姓名(niusipeng) 年龄(26) 性别(man) 成绩(100)采用string 结构来存储:20031011:nameniusipeng20031011:age2620031011:sexman20031011:score100取出学号为20031011这个学生的成绩:接下来用更简单的结构hash 来存储:KeyField 域Value20031011nameNiusipengsexManage26score100# hmset 20031011 name niusipeng age 26 sex man score 100我想取出学号为20031011 这个学生的学习

17、成绩:取出学号为20031011这个学生的所有信息:消息订阅预发布四 用php操作redisphpredis中文手册:41 下载 phpredis 扩展包 上传到linux并解压1 进入phpredis源码目录 执行php的bin目录下的一个工具叫 phpize2 配置并编译安装phpredis./configure -with-php-config=/usr/local/webserver/php/bin/php-config注意:with-php-config 后面是你自己的php的bin目录下面的php-config工具# make && make install编译安装

18、完之后,会在这个目录下/usr/local/webserver/php/lib/php/extensions/no-debug-zts-20121212/ 生成 redis.so 接下来 配置phpredis 修改 php.ini 配置文件。编写一个php文件 在php.ini文件里加入两行至此,使用php操作redis 所用到的 phpredis扩展包 已经编译安装并配置完毕。3 使用php操作redis在网站目录里创建一个 测试文件 testredis.php直接浏览器访问 http:/localhost/testredis.php五、 其它 Redis php mysql 综合实践 需求描述:A和B为一对异地恋情侣,放暑假了,A到B所在城市见B。B很着急,非常想知道A现在到哪了。他就想如果能有一款可以查看对方到哪了的应用,那该多好啊!于是.实现思路:A将自己的位置发送到服务器上,B到服务器上读取。方案:由于读写频繁,故将数据更新到redis中,而不是更新到mysql数据库中。首先得登录: 当用户第一次登录,那么到mysql里取这个用户的信息验证。 验证成功之后,将用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论