redis必会

栏目: 数据库 · 发布时间: 6年前

内容简介:1.NosqL非关系型数据库,里面包含Redis和MondoDB2.为什么会用到关系型数据库?因为当数据量太多,访问人数过多的时候,在访问关系型数据库时会到硬盘里进行读写过多

1.NosqL

非关系型数据库,里面包含 Redis 和MondoDB

2.为什么会用到关系型数据库?因为当数据量太多,访问人数过多的时候,在访问关系型数据库时会到硬盘里进行读写过多

这样就会导致访问速度很慢,服务器压力很大。

3.这个时候,我们就可以使用非关系型数据库,它相当于一个缓存区,

把一些经常用的数据放到缓存区里,当用户使用时直接到缓存区中去读取,缓存区找不到再去 Mysql 中拿。

比如12306首页、天猫0点抢购,会把一本分数据放到缓存区里

4.

列表[] ----->支持增删改查,数据类型多样--顺序表

元组() ----->不支持增删改查,只能读

集合{} ----->支持增删改查,元素不重复

字典{} ------>以键值对存储,支持增删改查

面试题:对列表进行去重,可以先将其先转换成集合,在转换回去

a= [1,1,2,2,3,3,]

b = set(a)

a = list(b)

5.redis 是以健命令来进行增删改查的。就根据键来找值,键值对的NoSQL,即一个健对应一个值,键的类型永远都是字符串,

这个值可以是字符串哈希列表等数据类型。

1)建命令

* KEYS+正则 查找当下存在的健

* EXISTS KEY... 判断建是否存在,如果存在返回1,不存在返回0

* TYPE KEY 查看健对应VALUE的类型

* DEL KEY 会将该建以及对应的值都删除

* expire KEY +seconds 设置时间

* TTL KEY 查看建存在的时间

2)String

* 最基本的数据类型,最大存储521MB,可以存储二进制的任何数据,图片、数字、系列化对象

* SET KEY value 设置一个键值对

* SETES KEY seconds value 设置键值及其过期时间,以s为单位

* MSET key value key value 设置多个键值

* GET key 通过健获取值

* MGET key 获取多个值

* append key value 追加一个值

* strlen key 查看长度

3)Hash

* 用于存储对象,对象的格式是键值对(可以理解为存进去一个字典)

* HSET key field value 设置单个属性

* HMSET key field value key field value 设置多个

* HGET key field 获取 该建的属性对应的值 获取多个HMGET

* HGETALL KEY 获取该健存储的所有属性所有值。

4)list

* 用与存储一个列表,列表中元素是String,按照插入顺序排序

* LPUSH key value value 在该健头部添加

* RPUSH key value value 在改建尾部添加

* LINSERT KEY before|after pivot value 在一个元素的左面或者右边添加一个元素,pivot表示索引

* LPOP KEY 从左侧拿并删除

* RPOP KEY 从右侧拿并删除

* lrange key start stop 从列表中按照索引值遍历出响应元素 并不删除

* Ltrim key field 裁剪

5)set 无序集合、与列表类似、元素string类型、元素唯一不重复

* SADD KEY member member 添加元素

* Smembers key 获取元素

* SCARD KEY 返回元素的个数

* SINTER KEY1 KEY2 .. 求多个集合的交集

* SDIFF KEY1 KEY2.. 求多个集合的差集

* SUNION KEY1 KEY2 .. 求多个集合的合集

* SISMEMBER key member 判断一个元素是否在集合中

5)zset ——> sorted set 与set类似,但是是有序,通过score表示权重,根据权重来将元素排序

* ZADD KEY score member score1 member1...

* zrange key start stop 获取有序集合的元素

* ZCARD 返回元素个数

* ZSCORE KEY MEMBER 查看该元素的权重

6.发布订阅设计模式

设计模式:redis支持消息的发布与订阅,不需要进行主动请求,自动进行信息更新。

客户端订阅服务端,服务端有新消息,不需要客户端请求,直接发过去,长连接。

7.利用redis搭建主从集群,可以实现备份功能

只要改配置文件即可,更改配置文件bind

将一个bind更改为自己ip作为主

另一加slave ip 作为从,可以将主的数据存储备份

特点:

master/slave 角色

master/slave 数据相同

降低 master 读压力在转交从库

问题:

无法保证高可用

没有解决 master 写的压力

8.redis更容易搭建集群,redis可以登陆完善

9.使用过Redis做异步队列么,你是怎么用的?有什么缺点?

一般使用list结构作为队列,rpush生产消息,lpop消费消息。当lpop没有消息的时候,要适当sleep一会再重试。

缺点:

在消费者下线的情况下,生产的消息会丢失,得使用专业的消息队列如rabbitmq等。

能不能生产一次消费多次呢?----发布订阅模式

使用pub/sub主题订阅者模式,可以实现1:N的消息队列。

10.使用过Redis分布式锁么,它是怎么实现的?

先拿setnx来争抢锁,抢到之后,再用expire给锁加一个过期时间防止锁忘记了释放。

如果在setnx之后执行expire之前进程意外crash或者要重启维护了,那会怎么样?

set指令有非常复杂的参数,这个应该是可以同时把setnx和expire合成一条指令来用的!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

React 进阶之路

React 进阶之路

徐超 / 清华大学出版社 / 2018-4 / 69.00元

《React进阶之路》详细介绍了React技术栈涉及的主要技术。本书分为基础篇、进阶篇和实战篇三部分。基础篇主要介绍React的基本用法,包括React 16的新特性;进阶篇深入讲解组件state、虚拟DOM、高阶组件等React中的重要概念,同时对初学者容易困惑的知识点做了介绍;实战篇介绍React Router、Redux和MobX 3个React技术栈的重要成员,并通过实战项目讲解这些技术如......一起来看看 《React 进阶之路》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

MD5 加密
MD5 加密

MD5 加密工具