1 NoSQL的概念(理解)
(1)nosql是什么
NoSQL(不仅仅是SQL not only SQL),泛指==非关系型的数据库==。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题;
(a) nosql 它是非关系型数据库
(b) nosql 解决网站里面 大数据和高并发的问题(SNS社交网络上面/电商/12306)
(2)Nosql数据库的分类(特点)
key-value(键值对形式)型 nosql数据库 -- 典型代码 redis
列式存储型, 文档型 ,图表型(了解)
2 redis的认识
(1) redis开源 高性能nosql数据库,数据可以存储在内存或磁盘上面
(2) Redis 主要key-value结构形式存储,redis底层支持各种类型的数据存储结构
包括 list set map(hash) string等
3 redis特点:(理解--面试题)
(1) 数据存储内存,速度比较快
(2) 支持类型比较多
string(字符串)、list(链表)、set(集合)、 zset(sorted set --有序集合--api)和hash(哈希类型)。
(3)支持磁盘存储 -- 完成持久化操作 (aof rdb)
(4) 支持数据的过期 --(设置过期时间 expire)
(5) 支持集群操作 --(明天讲)
(6)支持订阅和发布 --(了解 MQ)
Redis 和 Memcache区别(面试题)--(掌握)
不同点:
memcach和redis的不同点
支持类型: 表来存储 string/list/map/set/... map
相同点: memcache和redis 都是 key-value 非关系型数据
redis 它是 key-value型的非关系型数据库,作用 做缓存
4 redis的使用场景
(1)redis使用最多的地方 就是缓存 --(内存最多)
(2)可以处理大数据量的计数问题 --(微博转发 点赞)
(3)实时的攻防系统
银行登录 (登出多少次 会锁定) --暴力破解(穷举法)
userid 1/2/3
(4)有效期应用 -- 优惠劵
(5)自动去重应用 -- set
(6)队列的结构 -- (FIFO) (list存储) -->消息队列(RabbitMQ) --地铁
(7)消息订阅和发布
5 redis 使用--掌握
安装: 直接下载下来 进行解压
(1)String 操作(掌握)
set key value
get key
(2)key的操作(掌握)
keys *
expire key second
ttl key
(3)list操作(掌握)
lpush/rpush key value1/value2
lrange key start end
lindex key index
(4)set操作
sadd key val1 /val2/val3
smembers key
srem key member
(5) hash操作(掌握)
hset key name value
hget key name
hmset key name1 key1 name2 key2
hmget key name1 name2
(6)订阅 发布 事务 了解
(7)设置密码 --通过配置文件操作(掌握)
6 java代码操作redis(掌握)
springboot (连接方式 -- 只需要做配置) jedis
string 操作
list操作
set操作
hash操作
事务操作 了解
7 redis里面持久化(掌握)
为什么需要持久化?
防止数据丢失
怎么持久化?
磁盘存储 和 内存磁盘
redis如果要实现磁盘存储(做持久化过程) 两种方案
rdb方式 : 在一个时间点内 保存一个数据的快照
save 1 1 1s钟之内至少有一个变化的时候,做持久化
缺点: 1s 之内的数据 操作时候,丢失,不能做持久化
aof方式 :
追加执行的配置文件的方式 (配置文件就有操作的命令)
8 保存到redis里面的数据永久存在的吗?(淘汰策略)--理解
-- 不是
可以设置过期时间 到过期时间之后, 会淘汰数据
达到内存最大值,也会淘汰
淘汰数据,怎么去淘汰(10000 个数据 -- 淘汰)
(2)淘汰策略:(理解)
大体三种 : lru(最近最少使用) ttl(即将过期的数据) random(随机淘汰)
volatile-lru:从已设置过期的数据集中挑选最近最少使用的淘汰 volatile-ttr:从已设置过期的数据集中挑选将要过期的数据淘汰 volatile-random:从已设置过期的数据集中任意挑选数据淘汰 allkeys-lru:从数据集中挑选最近最少使用的数据淘汰 allkeys-random:从数据集中任意挑选数据淘汰 noenviction:禁止淘汰数据
redis (淘汰策略通过公司里面的架构师来配置 --集群)