什么是NoSql

1. 概念

关系型数据库:mysql—-关系型数据库:mysql oracle sqlServer

非关系型数据库:NoSQL

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

关系型数据库:以关系(由行和列组成二维表)来建模的数据库.

2. 分类

Redis概述 - 图1

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. 计数器应用

网站通常需要统计注册用户数,网站总浏览次数等等

新浪微博转发数、点赞数

Redis概述 - 图2

3. 实时防攻击系统

暴力破解:使用工具不间断尝试各种密码进行登录。防:ip(账号)—->num,到达5次以后自动锁定IP,30分钟后解锁

解决方案:

1、存数据库

Redis概述 - 图3

登录操作的访问量非常大

2、static Map longinFailNumMap;

  1. Map存储空间有限,大批量就不行,并且断电以后数据丢失。

问题:

1、每次查询数据库,查询速度慢,多次写 内存

2、断电会丢失数据,多个节点,不能共用 redis集群,容量可以无限大,可以共享数据、并且支持过期

4. 排行榜

总积分榜,今日积分榜,周积分,月积分,季度积分

方案:从数据库中查出来计算.

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. 小结

  1. redis是什么?
  2. redis的实用场景?

安装Redis服务端

Redis 的官方下载站是 http://redis.io/download,可以去上面下载最新的安装程序下来

官网:redis.io

中文网:redis.cn

windows下的安装和使用

1.下载redis程序软件

使用redisbin32 或redisbin64

  1. 绿色软件,不需要安装,直接使用

Redis概述 - 图5

  1. 3. 启动redis服务(带配置文件启动,和不带配置文件启动)
  1. 直接双击redis-server.exe==>不带配置文件(不推荐);

推荐使用:在cmd中,如下图:

Redis概述 - 图6

  1. 连接到redis进行操作
    默认本地ip的默认端口:6379启动:直接双击:redis-cli.exe(不推荐);
    连接指定ip指定端口的服务:如下:

cmd>{%redis%}/redis-cli -h ip地址 -p 端口号

cmd>{%redis%}/redis-cli

Redis概述 - 图7

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

Redis概述 - 图8

登录命令:

客户端输入:

auth root

  1. 基本用法

Redis概述 - 图9

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

Redis概述 - 图10