Redis安装使用

Redis

一、什么是redis

nosql非关系数据库 数据模型 key=>value

Memcached 内存缓存数据库

Redis 内存缓存数据库

MongoDB 功能齐全 数据存储到磁盘

Redis 是Remote Dictionary Server(远程数据服务)的缩写。

是一款 内存高速缓存数据库

它支持多种数据结构

1. String、

2. List(双向链表)、

3. Hash(哈希)、

4. Set(集合)、

5. zSet(有序集合sorted set)

二、为什么使用redis

  1. 是一款数据库产品,有数据存储功能,

  2. 高速读取数据(in-memory)

  3. 减轻数据库负担

  4. 有集合计算功能(优于普通数据库和同类别产品)

  5. 多种数据结构支持

三、什么场合使用redis

根据不同的业务模式,使用不同的数据存储结构

[Sorted Set]排行榜应用,取top n操作,例如sina微博热门话题

[List]获得最新N个数据 或 某个分类的最新数据

[string incr]计数器应用

[Set] sns(social network site)获得共同好友

[Set]防攻击系统(ip判断)等等 黑白名单

四、Redis的优点(与Memcache比较)

  1. Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  2. Redis支持master-slave(主-从)模式应用。
  3. Redis支持数据的持久化,可以将数据保存在磁盘中,重启时候可以再次加载使用
  4. Redis单个value的最大限制是1GB,memcached只能存1MB的数据。

五、编译安装Redis

#先将redis压缩包,php扩展包上传至/root/amp,然后解压
cd /root/amp
tar zxvf redis-4.0.1.tar.gz
cd redis-4.0.1
make PREFIX=/usr/local/redis install

测试启动redis

/usr/local/redis/bin/redis-server

后台启动redis服务器

默认不支持后台启动,使用不方便,通过配置文件进行配置。

cd /root/amp/redis-4.0.1
cp ./redis.conf /usr/local/redis/bin/
vim +/daemon redis.conf
:i 
daemonize yes
:wq
#启动时配上配置文件参数
./redis-server ./redis.conf

命令行客户端使用

/usr/local/redis/bin/redis-cli
#设置和获取
set name itcast
get name
#查看redis服务器状态
info

七、redis各种数据结构操作

1.key

keys

redis默认提供了16个库的使用,下标从0开始。

2.String

string是redis最基本的类型

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

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

如果只用string类型,redis就可以被看作加上持久化特性的memcache

string

3.List

ist类型其实就是一个双向链表。通过push,pop操作从链表的头部或者尾部添加删除元素。

这使得list既可以用作栈,也可以用作队列。

栈 先进后出 同一端进出

队列 先进先出 一端进,另外一端出

zhan

list

需求:建立一个存储结构 存储一种类型(业务上)的数据

取出最后进入结构的数据。

记录目前市场常见的编程语言

c c++ c# java html css JavaScript php python ruby go nodejs

key:LA
list1
list2

4. set

set是string类型的不允许有重复元素的无序集合

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

关于set集合类型除了基本的添加删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现sns中的好友推荐功能.

set

需求:存储两个人的朋友圈

设计:

xiaomingFR xiaoqiang xiaohua xiaohong xiaohuang xiaohei

xiaohongFR xiaoming xiaohei xiaohuang xiaolv xiaolan

set1

set2

set3

5. zset

和set一样sorted set也是string类型元素的集合,不允许有重复元素

不同的是每个元素都会关联一个权(score)。

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

zset

需求:手机应用下载排行榜

设计:APPTOP

id name score

1 QQ 3

2 wechat 6

3 weibo 5

4 taobao 8

5 jd 9

6 king 2

zset1

zset2

zset3

6. Hash

key=>value(feild:value)

适合存储key=>value对应格式的数据。json对应关系、对象对应关系、关联数组
hash

实例:

hash1

hash2

hash3

hash4

八、php操作redis

1.安装拓展

①编译生成拓展

tar zxvf redis-3.1.5.tgz
 cd  redis-3.1.5

是php的拓展文件,所以需要php的一个配置拓展的软件phpize,进行设置生成configure文件

shell > /usr/local/php/bin/phpize
shell > ./configure --with-php-config=/usr/local/php/bin/php-config && make && make install

②开启php.ini配置,重启启动服务器,查看phpinfo

vim /usr/local/php/lib/php.ini
#847行开启
extension=redis.so
service httpd restart

2.代码操作

<?php
  //实例化
  $redis = new Redis();
//连接
$redis -> connect('192.168.65.128',6379);
//设置
$redis->set('key1',time());
//获取
var_dump($redis->get('key1'))

3.消息队列操作

需求:设计一个抢购的业务模式,要求不能够超卖。

设计:

①把商品数量添加到list中

②通过出队列的方式,把数据一个一个取出来

设计模式:

生产者:把需要执行的任务添加到队列中

消费者:把队列中的任务一个一个消耗掉

实际中在代码中体现就是两个访问路径和方法

实现:

添加商品到对列中

duilie

限购思路:

①通过用户的唯一标识确认 登录之后才可以抢购,在下单之前判断是否已经买过了

②简单通过ip判断是否已经购买(误伤率大)
duilie2

九、优化

redis提供数据持久化机制(数据存储到磁盘中)。

方式:

①snapshotting快照 默认开启的

②aof append only file 追加写方式

1、snapshotting

①查看配置文件快照默认备份频率

k1

k2

k3

2、append only file

注意:开启append only file 之前的快照数据会丢失!!!

要先保存之前的快照数据到数据库或文件中!!!

①查看配置开启

b1

b2
img
②重启配置测试aof

3、主从复制架构

主 master 192.168.65.128

从 slave 192.168.65.129

slave读master服务器并同步

需解决问题:

①主服务器必须运行从服务器远程访问,防火墙端口问题6379

②从服务器上配置,主服务器的相关地址信息

3.1、主服务器配置

①打开主服务器防火墙6379端口
![img

z2

z3

②主服务器要在配置中允许从服务器登录

z4

3.2、从服务器配置

①修改配置文件相关信息

c1

修改好主从服务器,重启redis的主从服务器。通过redis-cli命令行客户端进行登录,测试操作主服务器

主服务器查看主从效果

cc1

从服务器查看主从效果

cc2

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值