Redis的安装和基本使用笔记

来源:互联网 发布:vlookup两张表查找数据 编辑:程序博客网 时间:2024/05/16 13:47

1.课程介绍
1.介绍什么是Redis;(了解)
2.如何安装Redis;(掌握)
3. Redis命令操作;(掌握)
4.PHPRedis的安装及使用(掌握)
5.Redis持久化(了解)

2.Redis概述(了解)
2.1.缓存

以京东首页商品分类为例:京东分了3级菜单,总计可能有上千种商品分类.每个用户访问京东首页,都需要从数据获取所有商品分类信息.如果每秒有一万个用户访问京东首页,就需要查询数据库一万次,会对数据库造成很大的压力.
由于商品分类信息是不经常变动的,我们可以使用缓存技术,将商品分类信息保存到缓存里面.每次需要获取分类信息的时候,直接从缓存获取而不需要查询数据库,大大提高系统性能,减轻数据库压力.
2.2.Redis是什么
Redis 是一个高性能的Nosql(非关系型数据库),数据保存在内存中。
Nosql 是以key-value形式存储,和传统的关系型数据库不一样。不一定遵循传统数据库的一些基本要求,比如说,不遵循sql标准,事务,表结构等等,非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。
在PHP开发中,redis更多是作为缓存来使用.

2.3.Redis特点
1.数据保存在内存,存取速度快,并发能力强
2.它支持存储的value类型相对更多,包括string(字符串)list(链表)、、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。
3. redis的出现,很大程度补偿了memcache这类key/value存储的不足,在部分场合可以对关系数据库(如MySQL)起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript等客户端,使用很方便。
4.Redis支持主从同步。数据可以主服务器向任意数量从的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。
5.支持持久化,可以将数据保存在硬盘的文件中
6.支持订阅/发布(subscribe/publish)功能
2.4.Redis的性能
下面是官方的bench-mark数据:
测试完成了50个并发执行100000个请求。
设置和获取的值是一个256字节字符串。
Linux box是运行Linux 2.6,这是X3320 Xeon 2.5 ghz。
文本执行使用loopback接口(127.0.0.1)。
结果:读的速度是110000次/s,写的速度是81000次/s 。

2.5.Mysql、memcache和redis的比较

mysql   redis   memcache

类型 关系型 非关系型 非关系型
存储位置 磁盘 磁盘和内存 内存
存储过期 不支持 支持 支持
读写性能 低 非常高 非常高

2.6.Redis使用场景
1.取最新N个数据的操作(list)
2.排行榜应用,取TOP N操作
3.需要精准设定过期时间的应用
4.计数器应用
5.Uniq操作,获取某段时间所有数据排重值
6.实时系统,反垃圾系统
7.Pub/Sub构建实时消息系统
8.构建队列系统
9.缓存
2.7.Redis的中文手册
http://doc.redisfans.com/

3.安装Redis(掌握)
3.1.windows下的安装和使用
1.下载redis程序软件
使用redisbin32 或redisbin64
2.绿色软件,不需要安装,直接使用
3.启动redis服务(带配置文件启动,和不带配置文件启动)

使用netstat -anb | more
如果你看到有6379 在监听,说明ok
4.连接到redis进行操作
cmd>{%redis%}/redis-cli -h ip地址 -p 端口号
ip 默认为本地 -p 默认6379
cmd>{%redis%}/redis-cli
5.基本用法

3.2.Linux下的安装和使用
3.2.1.Redis服务安装
1.下载redis源码
wget http://download.redis.io/releases/redis-3.2.1.tar.gz
或者使用ftp上传redis-3.2.1.tar.gz
2.安装redis
tar xf redis-3.2.1.tar.gz //解压
cd redis-3.2.1
//不需要配置参数 不需要执行./configure
make && make install//编译&&安装
3.将redis设置为系统服务
cp (redis源码目录)utils/redis_init_script /etc/init.d/redis
vim /etc/init.d/redis //修改红框处的代码

4.修改redis.conf配置文件
mkdir /etc/redis //创建/etc/redis目录
cp (redis源码目录)/redis.conf /etc/redis/redis.conf
vim /etc/redis/redis.conf
//将redis配置文件复制到redis
//设置为守护进程,以后台方式运行
使用service redis start命令启动redis服务.

5.将redis服务设置为开机启动
chkconfig –-add redis
chkconfig –level 35 redis on
4.Redis操作(重点)
4.1.使用redis-cli操作redis
4.1.1.对string类型的常用操作(掌握)
set key value//将字符串值value关联到key
get key //返回key关联的字符串值

mset //同时设置一个或多个 key-value 对
mget //返回所有(一个或多个)给定 key 的值

incr key //将 key 中储存的数字值增1(key不存在,则初始化为0,再加1)
decr key //将 key 中储存的数字值减1(key不存在,则初始化为0,再减1)

4.1.2.对key的常用操作(掌握)
keys * //获取所有key列表
del key //删除key
expire key xx //设置key的过期时间(xx秒后过期)
ttl key //查看key的过期时间(-2:过期,-1:代表永不过期)
flushall //清空整个redis服务器数据

4.1.3.对list集合的常用操作
list集合可以看成是一个左右排列的队列(列表)
lpush key value //将一个或多个值 value 插入到列表 key 的表头(最左边)
rpush key value //将一个或多个值 value 插入到列表 key 的表尾(最右边)

lpop key //移除并返回列表 key 的头(最左边)元素。
rpop key //移除并返回列表 key 的尾(最右边)元素。

lrange key start stop //返回列表 key 中指定区间内的元素
lrem key count value //根据count值移除列表key中与参数 value 相等的元素count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。count = 0 : 移除表中所有与 value 相等的值。

lindex key index //返回列表 key 中,下标为 index 的元素
ltrim key start stop //对一个列表进行修剪

4.1.4.对set集合的常用操作
set集合是一个无序的不含重复值的集合
sadd key member //将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略
srem key member //移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略
smembers key //返回集合 key 中的所有成员。

4.1.5.对SortedSet(有序集合)的操作(自行学习)

4.1.6.对hash类型的常用操作
hash类型类似于php的数组
hset key name value//添加一个name=>value键值对到key这个hash类型
hget key name //获取hash类型的name键对应的值
hmset key name1 value1 name2 value2 //批量添加name=>value键值对到key这个hash类型
hmget key name1 name2//批量获取hash类型的键对应的值
hkeys key //返回哈希表 key 中的所有键
hvals key //返回哈希表 key 中的所有值
hgetall //返回哈希表 key 中,所有的键和值
我们将user:1(name:zhangsan,age:18,sex:nv)的信息保存在hash表.

4.1.7.事务(了解)
multi //标记一个事务块的开始。
exec //执行所有事务块内的命令。

discard //取消事务,放弃执行事务块内的所有命令。
Redis的事务在执行exec指令时,才批量执行操作,没有回滚操作
4.1.8.订阅/发布(了解)
SUBSCRIBE channel [channel …] //订阅给定的一个或多个频道的信息。
PUBLISH channel message //将信息 message 发送到指定的频道 channel 。
新开一个客户端订阅tv频道

发布nihao!消息到tv频道

订阅tv频道的客户端可以收到nihao!消息

4.1.9.设置密码(了解)
1.通过命令动态调整密码
CONFIG SET 命令可以动态地调整 Redis 服务器的配置而无须重启,重启后失效
CONFIG SET requirepass 123456 //将密码设置为123456
CONFIG SET requirepass “” //清除密码
AUTH 123456 //输入密码进行认证

2.通过配置文件设置密码
在配置文件redis.conf中增加一行代码
requirepass 123456

将密码123456设置到配置文件中,redis启动时加载该文件,即可启用密码

4.2.使用php代码操作redis(重点)
4.2.1.Linux系统安装Phpredis
1.下载phpredis源码(phpredis-2.2.8.zip)
2.解压
unzip phpredis-2.2.8.zip -d ./
3.使用phpize配置php(phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块)
如果提示缺少autoconf组件,安装autoconf-2.62.tar.gz
4.执行phpize
cd phpredis-2.2.8 //进入phpredis目录
/usr/local/lamp/php/bin/phpize //执行phpize命令

./configure –with-php-config=/usr/local/lamp/php/bin/php-config
5.编译安装
make && make install
安装完会得到redis.so文件的路径
( /usr/local/lamp/php/lib/php/extensions/no-debug-zts-20131226/)
6.修改php.ini文件(通过phpinfo查看配置文件路径),添加redis.so支持

extension=(得到的redis.so文件路径)/redis.so

7.重启apache: service httpd restart

4.2.2.编写php代码操作redis
1.redis_set.php向redis添加数据

2.redis_get.php从redis获取已添加的数据,验证是否正确

5.Redis持久化配置(了解)
Redis 提供了两种不同级别的持久化方式:RDB和AOF,可以通过修改redis.conf来进行配置
5.1.RDB模式
RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照,默认开启该模式.
如何关闭 rdb 模式:
save “”

save 900 1 //至少在900秒的时间段内至少有一次改变存储同步一次

save xxx

save 60 10000

5.2.AOF追加模式
AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集,默认关闭该模式。
如何开启aof模式:
appendonly yes //yes 开启,no 关闭

appendfsync always //每次有新命令时就执行一次fsync 

这里我们启用 everysec

appendfsync everysec //每秒 fsync 一次

appendfsync no //从不fsync(交给操作系统来处理,可能很久才执行一次fsync)

其它的参数请大家看redis.conf配置文件详解
5.3.两种方式对比
两种方式各有优缺点,可以同时开启使用,也可以关闭持久化功能,让数据保存在内存中。

作为缓存使用,通常我们使用AOF模式或关闭持久化功能

6.作业
1.Windows下练习redis命令操作(截图保存)
2.在linux上安装redis软件服务
3.在linux上安装phpredis组件
4.Redis配置文件修改,开启aof模式和关闭rdb持久化模式
5.编写php代码操作redis,要求实现以下所有操作(上课所学命令对应的方法都要有):
对string类型的操作
对keys的操作
对list和set的操作
对hash类型的操作

6.在linux系统完成。A)建立一个student数据表,添加一些数据。B)编写redis.php实现:从redis读取最新10个sutdent数据,如果数据不存在或已过期,则从数据库读取,并保存到redis,并设置过期时间1分钟。C)添加和修改学生信息时清除redis缓存。
7.完善抽奖系统

2 0
原创粉丝点击