Redis

学习目标

Snipaste_2020-02-12_17-08-45.png

Redis的介绍及安装

Redis是什么?

 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings)散列(hashes)列表(lists)集合(sets)有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了复制(replication),LUA脚本(Lua scripting),LRU驱动事件(LRU eviction),事务(transactions)和不同级别的 磁盘持久化(persistence), 并通过Redis哨兵(Sentinel) 和自动分区(Cluster)提供高可用性(high availability)

性能

 下面是官方的bench-mark数据:

 测试完成了50个并发执行100000个请求。

 设置和获取的值是一个256字节字符串。

 结果:读的速度是110000次/s,写的速度是81000次/s

Redis历史简介

 2008年,意大利一家创业公司Merzia的创始人Salvatore Sanfilippo为了避免MySQL的低性能,亲自定做一个数据库,并于2009年开发完成,这个就是Redis。

 从2010年3月15日起,Redis的开发工作由VMware主持。

  从2013年5月开始,Redis的开发由Pivotal赞助。

​ 说明:Pivotal公司是由EMC和VMware联合成立的一家新公司Pivotal希望为新一代的应用提供一个原生的基础,建立在具有领导力的云和网络公司不断转型的IT特性之上。Pivotal的使命是推行这些创新,提供给企业IT架构师和独立软件提供商。

支持语言

image3.png

支持的数据类型

 stringhashlistsetsorted set

安装

下载地址

 http://redis.io/

上传至服务器

taqyZ9.png

解压

tar zxvf redis-5.0.3.tar.gz

安装依赖

yum -y install gcc-c++ autoconf automake

image5.png

预编译

切换到解压目录

cd redis-5.0.3/
make

taL1W6.png

安装

创建安装目录

mkdir -p /usr/local/redis

不使用:make install(make install默认安装到/usr/local/bin目录下)

使用:如果需要指定安装路径,需要添加PREFIX参数

make PREFIX=/usr/local/redis/ install

taLrSf.png

安装成功如图

taL6Og.png

Redis-cli:客户端

Redis-server:服务器端

启动

安装的默认目标路径:/usr/local/redis/bin

taLzp6.png

启动

./redis-server

taOF7d.png

默认为前台启动,修改为后台启动

复制redis.conf至安装路径下

cp redis.conf /usr/local/redis/bin/

修改安装路径下的redis.conf,将daemonize修改为yes

taOnc8.png

启动时,指定配置文件路径即可

taOUjU.png

通过windows客户端访问

安装Redis客户端

tdaG8S.png

建立连接->失败

taOggK.png

修改配置文件redis.conf

注释掉bind 127.0.0.1可以使所有的ip访问redis,若是想指定多个ip访问,但并不是全部的ip访问,可以bind设置

taOo4I.png

关闭保护模式,修改为no

taOH8P.png

添加访问认证

taXEb4.png

修改后kill -9 XXXX杀死redis进程,重启redis

taX3rD.png

再次建立连接 -> 成功

tdUj9U.png

我们可以修改默认数据库的数量 默认16

tdapu9.png
修改database 32则默认为32个数据库

修改后kill -9 XXXX杀死redis进程,重启redis即可看到效果

tdUTns.png

关系型数据库与非关系型数据库

关系型数据库

 采用关系模型来组织数据的数据库,关系模型就是二维表格模型。一张二维表的表名就是关系,二维表中的一行就是一条记录,二维表中的一列就是一个字段。

优点

  • 容易理解
  • 使用方便,通用的sql语言
  • 易于维护,丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大降低了数据冗余和数据不一致的概率

缺点

  • 磁盘I/O是并发的瓶颈
  • 海量数据查询效率低
  • 横向扩展困难,无法简单的通过添加硬件和服务节点来扩展性能和负载能力,当需要对数据库进行升级和扩展时,需要停机维护和数据迁移
  • 多表的关联查询以及复杂的数据分析类型的复杂sql查询,性能欠佳。因为要保证acid,必须按照三范式设计。

数据库

 Orcale,Sql Server,MySql,DB2

非关系型数据库

非关系型,分布式,一般不保证遵循ACID原则的数据存储系统。键值对存储,结构不固定。

优点

  • 根据需要添加字段,不需要多表联查。仅需id取出对应的value
  • 适用于SNS(社会化网络服务软件。比如facebook,微博)
  • 严格上讲不是一种数据库,而是一种数据结构化存储方法的集合

缺点

  • 只适合存储一些较为简单的数据
  • 不合适复杂查询的数据
  • 不合适持久存储海量数据

数据库

  • K-V:Redis,Memcache
  • 文档:MongoDB
  • 搜索:Elasticsearch,Solr
  • 可扩展性分布式:HBase

比较

内容 关系型数据库 非关系型数据库
成本 有些需要收费(Orcale) 基本都是开源
查询数据 存储存于硬盘中,速度慢 数据存于缓存中,速度快
存储格式 只支持基础类型 K-V,文档,图片等
扩展性 有多表查询机制,扩展困难 数据之间没有耦合,容易扩展
持久性 适用持久存储,海量存储 不适用持久存储,海量存储
数据一致性 事务能力强,强调数据的强一致性 事务能力弱,强调数据的最终一致性

来源:https://blog.51cto.com/14833420/2501091


码神部落- 版权声明 1、本主题所有言论和图片纯属会员个人意见,与码神部落立场无关。
2、本站所有主题由该帖子作者发表,该帖子作者木槿暖夏码神部落享有帖子相关版权。
3、码神部落管理员和版主有权不事先通知发贴者而删除本文。
4、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者木槿暖夏码神部落的同意。
5、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任。
6、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
7、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意。

最新回复 (0)
    • 码神部落
      2
        立即登录 立即注册 GitHub登录
返回
发新帖
作者最近主题: