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合成一条指令来用的!


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

查看所有标签

猜你喜欢:

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

流量的秘密

流量的秘密

(英)Brian Clifton / 钟镭 / 人民邮电出版社 / 2010-2 / 45.00元

你对自己的网站有足够的了解吗?你知道自己网站的真实影响力和竞争力吗?你在想尽办法留住你的访客吗?《流量的秘密:Google Analytics网站分析与优化技巧》将运用最新的网络计量学方法,教你获取真正有价值的信息。 哪种市场营销活动最有成效?如何量化这些效果?应该从哪些衡量指标进行追踪?《流量的秘密:Google Analytics网站分析与优化技巧》介绍的Google Analytics......一起来看看 《流量的秘密》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具