redis

redis简介:

memcache :

1:支持简单数据类型

2:不支持数据磁盘持久化

3:不支持分片

4:不支持主从

redis:

1:数据类型丰富

2:支持数据磁盘持久化:RDB,AOF

3:支持分片

4:支持主从

 

为什么redis这么快?

1:完全基于内存的,绝大部分请求是纯粹的内存操作,执行效率高

2:数据结构简单,对数据操作也简单

3:采用单线程,避免了频繁对上下文切换和锁竞争(单线程是指处理一个网络请求的时候采用单     线程来处理,一个redis sevice执行时肯定不是单线程,例如做数据持久化的时候)

4:使用多路I/O复用,非阻塞I/O 

 

redis的基本数据类型操作指令:

String  :最基本的数据类型,二进制安全

设置 set key value   获取 get key

hash :String 元素组成的字典,适合存储对象

hmset lilei name "haha" age 27 title "hehe"

hget lilei nage

list :列表,按照String插入元素排序

lpush mylist aaa

lrange mylist 0 10 

set:String 元素组成的无序集合,通过hash表实现,不允许重复

sadd myset 111

smembers myset

Sorted Set:通过分数来为集合中的元素进行从小到大的排序

zadd myset 3 abc

zrangebyscore myset 0 10

 

如何从海量的key中的查询固定前缀的key

keys:keys指令一次性返还所有匹配的key。如果key的数量大会使服务卡顿 

  keys pattern : keys k1

dbsize: 查看keys的数量

scan指令

 scan cursor match pattern count number

scan 0 match k1* count 10 

 

如何通过redis 实现分布式锁

setnx key value

exprie key time

实现分布式 :set key value ex 10 nx

如何通过redis实现异步队列?

通过list 使用rpush生产消息,lpop消费消息

rpush myrabbitmq aaa

缺点:没有等待队列里面有值就去消费,可以通过在应用层引入sleep机制去调用lpop去重试

优化:blpop myrabbitmq 30 (等待myrabbitmq这个key 30秒 )

 缺点:只能让一个消费者消费,消费后就没了

优化:使用pub/sub主题订阅模式

pub发送消息,sub消费消息

subscribe mytopic :订阅主题为mytopic的消息

publish mytopic "hello" :发布主题为mytopic的消息

缺点:消息的状态是无状态的并且消息是即发即收的,当发布消息的时候某台服务器刚好下线就收不到该消息了

 

redis 持久化

 

RDB 持久化

redis重启后会去加载对应的redis.conf文件,对应的同步指令有save命令

save 900 1 :当900秒内有一条写入操作,则进行一次同步(阻塞主进程)

stop-writes-on-bgsave-error yes :当备份进程出错的时候,主进程就停止接受新的写入操作了

bgsave:fork出一个子现场来进行创建rdb文件,不阻塞服务器进程

lastsave:上次执行save指令的时间

 

 

 

pipeline

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值