什么是NoSql
1. 概念
关系型数据库:mysql—-关系型数据库:mysql oracle sqlServer
非关系型数据库:NoSQL
NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,它泛指非关系型的数据库。随着互联网2003年之后web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的交友类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。
关系型数据库:以关系(由行和列组成二维表)来建模的数据库.
2. 分类

redis是一个key-vlue类型Nosql!主要用途用来做缓存,查询速度很快,数据无结构!
Redis是什么
Redis 是一个高性能的开源的、C语言写的Nosql(非关系型数据库),数据保存在内存中(快,容易丢失)。
Redis 是以key-value形式存储的Nosql,和传统的关系型数据库不一样。不一定遵循传统数据库的一些基本要求,比如说,不遵循sql标准,事务,表结构等等,非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。
数据结构:数组,list,set,map,tree等等
redis给我们提供了一堆方法,调用特定方法就能把数据保存为特定数据结构.
特点(优势)
1.数据保存在内存,存取速度快,并发能力强
2.它支持存储的value类型相对memcached更多,包括string(字符串)、list(链表)、set(集合)、 zset(sorted set —有序集合)和hash(哈希类型)。
3.redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库(如MySQL)起到很好的补充作用。
4.它提供了Java,C/C++,C#,PHP,JavaScript等客户端,使用很方便。
5.Redis支持集群(主从同步)。数据可以主服务器向任意数量从的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。
6.支持持久化,可以将数据保存在硬盘的文件中
7.支持订阅/发布(subscribe/publish)功能 QQ群
数据存储:
存放到内存中,并且还能不定期持久化到硬盘.
Value类型:
相较于memcached支持Value更多
客户端支持:
支持多种客户端-跨语言
超大并发支持:
支持集群
免费
Mysql、Memcached和Redis的比较(背)
| mysql | redis | memcached | |
|---|---|---|---|
| 类型 | 关系型 | 非关系型 | 非关系型 |
| 存储位置 | 磁盘 | 磁盘和内存 | 内存 |
| 存储过期 | 不支持 | 支持 | 支持 |
| 读写性能 | 低 | 非常高 | 非常高 |
Memcached和Redis的相同点和不同点? Memcached?
相同点:
都是key-value类型Nosql,都存放数据到内存中,读写效率高,而且都支持存储过期.
不同点:
redis相较于Memcached还支持持久化到磁盘,数据安全更高.
redis相较于Memcached支持value类型更多.
使用场景
1. 中央缓存(记住)
经常查询数据,不经常变化的数据,放到读速度很快的空间(内存),以便下次访问减少时间。减轻压力(数据库的压力),减少访问时间.而redis就是存放在内存中的。
Hibernte二级缓存,mybatis二级缓存,这些缓存默认都不支持在集群环境使用.redis中央缓存就OK.
2. 计数器应用
网站通常需要统计注册用户数,网站总浏览次数等等
新浪微博转发数、点赞数

3. 实时防攻击系统
暴力破解:使用工具不间断尝试各种密码进行登录。防:ip(账号)—->num,到达5次以后自动锁定IP,30分钟后解锁
解决方案:
1、存数据库

登录操作的访问量非常大
2、static Map longinFailNumMap;
Map存储空间有限,大批量就不行,并且断电以后数据丢失。
问题:
1、每次查询数据库,查询速度慢,多次写 内存
2、断电会丢失数据,多个节点,不能共用 redis集群,容量可以无限大,可以共享数据、并且支持过期
4. 排行榜
总积分榜,今日积分榜,周积分,月积分,季度积分
方案:从数据库中查出来计算.

问题:
1、实时查询,查询速度慢
2、还要进行各种计算。
5. 设定有效期的应用
设定一个数据,到一定的时间失效。 自动解锁,购物券
6. 自动去重应用
Uniq 操作,获取某段时间所有数据排重值 这个使用 Redis 的 set 数据结构最合适了,只需要不断地将数据往 set 中扔就行了,set 意为 集合,所以会自动排重。
7. 队列
构建队列系统 使用 list 可以构建队列系统,使用 sorted set 甚至可以构建有优先级的队列系统。
秒杀:可以把名额放到内存队列(redis),内存就能处理高并发访问。
价格低,数量有限,有约束的时间:访问的多,服务器压力很大.
8. 消息订阅系统
Pub/Sub 构建实时消息系统 Redis 的 Pub/Sub 系统可以构建实时的消息系统,比如很多用 Pub/Sub 构建的实时聊天系统 的例子。
比如QQ群消息
9. 小结
- redis是什么?
- redis的实用场景?
安装Redis服务端
Redis 的官方下载站是 http://redis.io/download,可以去上面下载最新的安装程序下来
官网:redis.io
中文网:redis.cn
windows下的安装和使用
1.下载redis程序软件
使用redisbin32 或redisbin64
- 绿色软件,不需要安装,直接使用

3. 启动redis服务(带配置文件启动,和不带配置文件启动)
直接双击redis-server.exe==>不带配置文件(不推荐);
推荐使用:在cmd中,如下图:

- 连接到redis进行操作
默认本地ip的默认端口:6379启动:直接双击:redis-cli.exe(不推荐);
连接指定ip指定端口的服务:如下:
cmd>{%redis%}/redis-cli -h ip地址 -p 端口号
cmd>{%redis%}/redis-cli

密码的配置:在redis.conf文件中:

登录命令:
客户端输入:
auth root
- 基本用法

Linux下的安装和使用
1下载redis源码
wget http://download.redis.io/releases/redis-6.0.5.tar.gz
2安装redis
tar zxf redis-6.0.5.tar.gz //解压
cd redis-6.0.5
//不需要配置参数 不需要执行./configure
make && make install//编译&&安装
注意:新版的redis需要gcc较高版本 需要先安装或则升级gcc版本
安装:
yum -y install gcc
升级:
安装centos-release-scl
yum install centos-release-scl
安装 devtoolset
yum install devtoolset-9-gcc*
激活:
scl enable devtoolset-9 bash
环境参数配置
在redis根目录创建一个config文件夹 mkdir config
把配置文件内容复制到config目录里面:
cat redis.conf | grep -v “#” | grep -v “^$” >> config/redis.conf

