定义:

redis是一种支持Key-Value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。该数据库使用ANSI C语言编写,支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化

Redis数据类型

1、 Redis一共支持五种数据类:string(字符串),hash(哈希),list(列表),set(集合)和zset(sorted set有序集合)。

2、php简单的操作redis的5种数据类型

1)php操作string类型所使用的常用方法:

set : 赋值

get : 获取值

decr: 减值

incr: 增值

2)php操作list类型所使用的常用方法:

lpush:从左边插入

rpush:从右边插入

lpop:从左边弹出

rpop:从右边弹出

llen:查看某个list数据类型的长度

3)php操作set类型所使用的常用方法:

sadd:添加

scard:统计元素个数

smembers:以数组形式统计元素个数

sismember:判断set数据中是否存在某个元素 

srem:删除某个set数据中的元素

4)php操作hash类型所使用的常用方法:

hset:给属性赋值

hget:获取单个属性的值

hmget:获取多个属性的值

5)php操作sort-set数据类型所使用的常用方法:

zadd:给某个score添加值

zrange:从低到高查询

zrevrange:从高到低查询

php中安装

1.使用phpinfo()函数查看PHP的版本信息,这会决定扩展文件版本。

2.下载php_igbinary-1.2.1-5.5-ts-vc11-x64.zip,php_redis-2.2.5-5.6-ts-vc11-x64.zip(一定要保证版本的正确性)

3.解压缩后,将php_redis.dll和php_redis.pdb拷贝至php的ext目录下

4.修改php.ini,(PS:此php.ini文件是在Apache目录)在该文件中加入:

; php_redis

extension=php_igbinary.dll

extension=php_redis.dll

注意:extension=php_igbinary.dll一定要放在extension=php_redis.dll的前面,否则此扩展不会生效

5.重启Apache后,使用phpinfo查看扩展是否成功安装

6.打开redis服务后,可以用如下测试是否能够调用。

start D:\app\redis\redis-server.exe

start D:\app\redis\redis.windows.conf

1 <?php

2 //连接本地的 Redis 服务

3 $redis = new Redis();

4 $redis->connect('127.0.0.1', 6379);

Redis 持久化方式

一、两种方式:

1、RDB:以快照的形式存储到二进制文件中

1)       原理:每隔一段时间生成redis内存中的数据的一份完整的快照,

2)       配置:触发持久化的机制有手动触发和自动触发。

  1. 手动触发:执行bgsave命令即可
  2. 自动触发: 编辑配置文件: D:/app/redis/redis.windows..conf文件,手动配置检查点,一条save配置代表一个检查点,redis默认的机制是RDB,所以不涉及开启或不开启,我们只需要配置生成快照的时间方式即可,redis中默认有三条,我们可以自己根据实际业务需求设置时间,例如,我想每隔5s,只要有一条数据更新就生成快照

2、AOF:Redis的每次发生改变就写入到日志中

1)       原理:有数据写入redis,redis自身就会将数据写入aof日志文件,redis并不是直接写入aof文件,而是先写到os cache,然后到一定时间再从os cache会触发操作系统的fsync操作写到磁盘

2)       配置:同样有两种触发机制,手动触发和自动触发。

  1. 手动触发:执行bgrewriteaof命令即可
  2. 自动触发:由于redis默认的是RDB的持久化方式,AOF的方式默认是关闭的,所以,我们需要手动开启,我们打开D:/app/redis/redis.windows..conf配置文件

a)       打开AOF机制:appendonly yes

b)      配置rewrite

在配置文件中有两个配置,auto-aof-rewrite-percentage和auto-aof-rewrite-min-size

第一条命令的意思是,当aof日志文件中的大小大于上一次的一倍了,那就执行rewrite

第二条意思是,就算满足了第一条的条件,但是还是需要和auto-aof-rewrite-min-size配置的值进行比较,当aof的大小大于64m时才会进行rewrite操作

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

  1. AOF的三种写入方式,使用默认的everysec即可,即,每秒写入一次

# appendfsync always

appendfsync everysec

# appendfsync no

一、      redis持久化哪种方式更安全一些

AOF更安全

相比RDB,AOF会将每次发生改变的内容写入到日志里面,保证了数据的完整性,数据不会丢失,RDB以快照形式存储,如果快照时间过长,这个过程中的数据可能丢失,不能保证数据的完整性

Redis实现消息队列

1、可以直接使用Redis的List实现消息队列,只需简单的两个指令lpush和rpop或者rpush和lpop ,Redis不仅可作为缓存服务器,还可用作消息队列。它的列表类型天生支持用作消息队列。如下图所示:

2、队列有优先级的概念,我们就可以优先处理高级别的任务,实现方式有以下几种方式:

1)单一列表实现:队列正常的操作是 左进右出(lpush,rpop)为了先处理高优先级任务,在遇到高级别任务时,可以直接插队,直接放入队列头部(rpush),这样,从队列头部(右侧)获取任务时,取到的就是高优先级的任务(rpop)

2)使用两个队列,一个普通队列,一个高级队列,针对任务的级别放入不同的队列,获取任务时也很简单,redis的BRPOP命令可以按顺序从多个队列中取值,BRPOP会按照给出的 key 顺序查看,并在找到的第一个非空 list 的尾部弹出一个元素,redis> BRPOP list1 list2 0

list1 做为高优先级任务队列

list2 做为普通任务队列

这样就实现了先处理高优先级任务,当没有高优先级任务时,就去获取普通任务

方式1最简单,但实际应用比较局限,方式2是推荐用法,实际应用最为合适

redis学习之旅-初识Redis的更多相关文章

  1. C# Redis学习系列三:Redis配置主从

    Redis配置主从 主IP :端口      192.168.0.103 6666 从IP:端口       192.168.0.108 3333 配置从库 (1)安装服务: redis-server ...

  2. redis 学习(1)-- redis 安装与启动

    redis 学习(1)-- redis 安装与启动 redis 特性 关于 redis 的介绍网上已经有很多信息了,这里我就不在详细说明了.介绍一下几个鲜明特性: 1.速度快 官方称可以达到10W的q ...

  3. redis学习教程一《Redis的安装和配置》

    redis学习教程一<Redis的安装和配置> Redis的优点 以下是Redis的一些优点. 异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执 ...

  4. C# Redis学习系列二:Redis基本设置

    上一篇:C# Redis学习系列一:Redis的认识.下载.安装.使用 一.redis 设置密码 使用下载好的 redis-cli.exe 指令: 1.设置密码: config set require ...

  5. 分布式缓存技术redis学习(三)——redis高级应用(主从、事务与锁、持久化)

    上文<详细讲解redis数据结构(内存模型)以及常用命令>介绍了redis的数据类型以及常用命令,本文我们来学习下redis的一些高级特性.目录如下: 安全性设置 设置客户端操作秘密 客户 ...

  6. 分布式缓存技术redis学习(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  7. 分布式缓存技术redis学习(一)——redis简介以及linux上的安装

    redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssd ...

  8. Redis 学习笔记4: Redis 3.2.1 集群搭建

    在CenOS 6.7 linux环境下搭建Redis 集群环境 1.下载最新的Redis版本 本人下载的Redis版本是3.2.1版本,下载之后,解压,编译(make): 具体操作可以参考我的博文:R ...

  9. redis学习(五) redis过期时间

    redis过期时间 1.redis过期时间介绍 有时候我们并不希望redis的key一直存在.例如缓存,验证码等数据,我们希望它们能在一定时间内自动的被销毁.redis提供了一些命令,能够让我们对ke ...

随机推荐

  1. 17.树的子结构(python)

    题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) class Solution: def HasSubtree(self, pRoot1, pRoo ...

  2. 5. ClustrixDB SQL语法

    CustrixDB支持的DML语法 SELECT, DISTINCT, [LEFT | RIGHT | OUTER] JOIN, STRAIGHT_JOIN UNION, HAVING, GROUP ...

  3. caffe 安装

    安装caffe 拉取镜像 nvidia/cuda:9.0-cudnn7-devel-centos7 1,换源 安装https://blog.csdn.net/tuomen5867/article/de ...

  4. QT信号槽 中的对象野指针

    例: connect(&objec1,&class::slot_func1,&object2,&class::slot_func2) 如果 &objec   传 ...

  5. select * from (XXXXX)[字符]——写法解析

    步骤:1.先执行括号里的语句:查询 select id from three ,将查询出来的数据作为一个结果集 取名为 a2.然后 再 select * from a 查询a ,将 结果集a 全部查询 ...

  6. 【Python】学习笔记十四:循环进阶

    range() 在Python中,for循环后的in跟随一个序列的话,循环每次使用的序列元素,而不是序列的下标. 我们继续开发range的功能,以实现下标对循环的控制: s = 'abcdefghj' ...

  7. centos设置定时删除文件定时清理网站日志

    1.进入linux系统 2.在任意目录创建一个sh后缀的文件,如: 3.编辑打开该文件,如图: 4.此时按键盘上的“i”键或者“insert”键,进入编辑模式 输入: #!/bin/shfind /d ...

  8. mappers:将sql映射注册到全局配置中

    <!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 --> <!-- 6.mappers: ...

  9. zay大爷的膜你题 D2T2——不老梦(AK梦)

    还是万年不变的外链 这个题.....是最难的....但是不知道为啥扶苏神仙讲完了之后我竟然听懂了.... 所以这个题我要好好写一写 首先我们看一看每一个测试点,来一点点得分 第一个测试点n = 1,直 ...

  10. 分布式任务队列 Celery

    目录 目录 前言 简介 Celery 的应用场景 架构组成 Celery 应用基础 前言 分布式任务队列 Celery,Python 开发者必备技能,结合之前的 RabbitMQ 系列,深入梳理一下 ...