Remote Dictionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。

Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。

Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。

Redis 安装

下载地址:​https://github.com/MSOpenTech/redis/releases​​。

Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis

Redis系列学习1-Redis安装启动与基础概念_分布式

打开文件夹,内容如下:

                                   

Redis系列学习1-Redis安装启动与基础概念_java_02

Redis启动

Redis和MySQL相同也是典型的C/S架构的系统,所以我们需要先启动服务器端然后再使用Redis的客户端登录Redis服务器端。

服务端启动

redis-server redis.windows.conf

Redis系列学习1-Redis安装启动与基础概念_数据库_03

关闭服务

redis-server --service-stop

客户端启动

Redis默认没有密码,设置密码方式为,将下图用红色框圈出的文件使用NotePad++打开然后将requirepass的注释打开,然后再其后面写上自己项设定的密码即可,我已经密码设置为123456所以上文客户端登录可以直接使用123456作为密码登录。

    

Redis系列学习1-Redis安装启动与基础概念_Redis_04

Redis系列学习1-Redis安装启动与基础概念_分布式_05

远程服务上执行命令

如果需要在远程 redis 服务上执行命令,同样我们使用的也是 redis-cli 命令。

语法:redis-cli h IP地址 –p 端口 –a 密码

如果是登录远程redis需要使用-h参数,我们本次登录本机redis则不需要使用-h参数。

本地客户端登录用redis-cli 密码登陆(redis-cli -a  password)

                         

Redis系列学习1-Redis安装启动与基础概念_Redis_06

若出现错误:Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝,无法连接。

原因是因为关闭了redis服务,在启动redis后,本地连接的时候重新打开一个cmd窗口,进行连接即可。

Redis关闭

第一种关闭方式:
    非正常关闭,比如断电,直接杀死Redis进程等方式。这种方式容易造成数据丢失。

第二种关闭方式

(正常关闭、数据保存)通过客户端使用shutdown命令关闭redis服务。

Redis介绍

单机MySQL时代

Redis系列学习1-Redis安装启动与基础概念_Redis_07

该模式存在性能瓶颈
●数据量太大,一个机器放不下
●数据的索引太大,一个机器的内存放不下
●访问量(读写)太大,一个服务器承受不住

缓存+读写分离

Redis系列学习1-Redis安装启动与基础概念_redis_08

网站上的访问80%以上都是在读、每次都去查询数据库,效率很低,引入缓存机制,第一次去MySQL中读取数据,将数据返回给用户的同时,将数据在缓存中存储下来,第二次访问,就可以直接在缓存中读取

分库分表+集群

Redis系列学习1-Redis安装启动与基础概念_Redis_09

NOSQL数据库来解决数据爆发式增长的一些问题

NOSQL

NOSQL(NOT Only SQL) 泛指非关系型数据库

1、NoSQL的特点

●方便扩展(数据之间没有关系)
●大数据量高性能(redis 写8w/s,读 11W/s)
●数据类型是多样性的,不需要事先设计数据库,随取随用
●存储方式多样,键值对、列存储、文档存储、图形数据库
●没有固定的查询语句

2、NoSQL的四大分类

●key-value键值对数据库:Redis、memcached
●文档性数据库:MongoDB 是基于分布式文件存储的数据库
●列存储数据库:HBase userId+序列化 10.3434 12.3445, 12.3536 13.4356 ,
●图形数据库:(朋友圈的社交网络,用户推荐) Neo4j四种分类的比较

Redis系列学习1-Redis安装启动与基础概念_java_10

Redis基本概念

Redis是一个开源的(BSD协议),内存中的数据结构存储系统,可以用来作为数据库,缓存和消息中间件
它支持多种类型的数据结构,如 ​​​字符串(strings)​​​,​​散列(hashes)​​​, ​​列表(lists)​​​, ​​集合(sets)​​​,​​有序集合(sorted sets)​​​与范围查询, ​​bitmaps​​​, ​​hyperloglogs​​​ 和 ​​地理空间(geospatial)​​ 索引半径查询。

Redis 内置了​​复制(replication)​​​,​​LUA脚本(Lua scripting)​​​, ​​LRU驱动事件(LRU eviction)​​​,​​事务(transactions)​​​和不同级别的 ​​磁盘持久化(persistence)​​​​--​​​RDB和AOP,并通过​​Redis哨兵(Sentinel)​​​和自动 ​​分区(Cluster)​​​提供高可用性(high availability)。


  • Redis中数据存放在内存中,也提供了Redis的持久化的方式是数据存储到磁盘
  • 以key-value形式存储,提供丰富的数据类型可以使用多种开发场景(支持String、list、set、hash等数据结构)
  • Redis性能极高,redis 写8w/s,读 11W/s
  • Redis具有原子性,
  • Redis支持数据备份,集群高可用的功能

Redis是单线程

Redis是基于内存操作的,CPU不是Redis性能瓶颈,Redis的瓶颈就是根据机器的内存和网络带宽,CPU不是性能瓶颈,就可以使用单线程的

Redis的数据都是存放在内存中,所以说单线程去操作效率就是最高的,相比多线程,减少了CPU上下文切换耗时,对于内存系统而言,没有上下文切换的效率就是最高的,多次读写都是在同一个CPU