REDIS系列一开篇

目录

REDIS系列一开篇

1.NoSQL简介

1.1 什么是NoSQL?

1.2 我们为什么使用NoSQL ? 

 

1.3 RDBMS vs NoSQL

1.4 NoSQL 产品

 NoSQL产品的显著特点:

​编辑 1.5 NoSQL 数据库分类

 1.6NoSQL 存储类型及特点

2.Redis

2.1 Redis简介

 2.2 Redis作用

2.3 Redis下载网站

2.4Redis使用群体

2.5Redis的部署场景

1.应用程序直接访问 Redis 数据库

​编辑

2. 应用程序直接访问 Redis,只有当 Redis 访问失败时才访问 MySQL​编辑

2.6Redis与其他数据库和软件的对比【了解一下;后续详解】

3. Redis安装【基于CentOS 7.3 x86-64 系统安装 】

 S1:rpm包安装

配置epel的yum源

在线yum安装

安装最新版本使用remi

启动服务

验证测试

登录

S2:源码安装

下载

解压

安装

启动

S3:Redis命令行客户端

发送命令

命令返回值

S4:源码配置服务脚本:


1.NoSQL简介

1.1 什么是NoSQL?

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

NoSQL用于超大规模数据的存储

(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展

1.2 我们为什么使用NoSQL ? 

  • 今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。
  • 用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL数据库的发展也却能很好的处理这些大的数据。
  • 随着互联网 web2.0 网站的兴起,传统的关系数据库在应付 web2.0 网站,特别是超大规模和高并发的SNS 类型的 web2.0 纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库 则由于其本身的特点得到了非常迅速的发展。
  • NoSQL 数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。 

 

1.3 RDBMS vs NoSQL

RDBMS vs NoSQL

NoSQLRDBMS
代表着不仅仅是SQL高度组织化结构化数据
没有声明性查询语言结构化查询语言(SQL)
没有预定义的模式数据和关系都存储在单独的表中
键 - 值对存储,列存储,文档存储,图形数据库数据操纵语言,数据定义语言
最终一致性,而非ACID属性严格的一致性
非结构化和不可预知的数据基础事务
CAP定理
高性能,高可用性和可伸缩性

1.4 NoSQL 产品

常见的NoSQL产品:redis、memcache、mongdb等

 NoSQL产品的显著特点:

1、NoSQL产品一般不使用严格的表关系;

2、NoSQL产品的数据查询一般不用在sql上;

 

1.5 NoSQL 数据库分类

NoSQL 数据库分类

键值数据库列族数据库文档数据库图形数据库
应用内容缓存分布式数据存储与管理存储、索引并管理面向文档的数据或者类似的半结构化数据大量复杂、互连接、低结构化的图结构场合,如社交网络、推荐系统等
缺点无法存储结构化信息、条件查询效率较低缺乏统一的查询语言复杂性高、只能支持一定的数据规模
优点扩展性好、灵活性好、大量写操作时性能高查找速度快、可扩展性强、容易进行分布式扩展、复杂性低性能好、灵活性高、复杂性低、数据结构灵活活性高、支持复杂的图形算法、可用于构建复杂的关系图谱

 1.6NoSQL 存储类型及特点

NoSQL存储类型及特点

类型 部分代表 特点
列存 储Hbase Cassandra Hypertable顾名思义,是按列存储数据的。最大的特点是方便存储结构化 和半结构化数据,方便做数据压缩,对针对某一列或者某几列 的查询有非常大的IO优势。
文档 存储MongoDB CouchDB 文档存储一般用类似json的格式存储,存储的内容是文档型 的。这样也就有有机会对某些字段建立索引,实现关系数据库 的某些功能。
keyvalue 存储 Tokyo Cabinet / Tyrant Berkeley DB MemcacheDB Redis 可以通过key快速查询到其value。一般来说,存储不管value 的格式,照单全收。(Redis包含了其他功能)
图存储Neo4J FlockDB 图形关系的最佳存储。使用传统关系数据库来解决的话性能低 下,而且设计使用不方便。
对象 存储 db4o Versant 通过类似面向对象语言的语法操作数据库,通过对象的方式存 取数据。
xml 数据 库Berkeley DB XML BaseX 高效的存储XML数据,并支持XML的内部查询语法,比如 XQuery,Xpath。

2.Redis

2.1 Redis简介

(1)全称:mote ctionary erver(远程字典服务器)。是完全开源免费的,用C语言编写的, 遵守 BSD协议。是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。       

(2)Redis 与其他 key - value 缓存有以下三个特点           

  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储  
  • Redis支持数据的备份,即master-slave模式的数据备份

 2.2 Redis作用

Redis作用

内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
取最新N个数据的操作,如:可以将最新的10条评论的ID放在Redis的List集合里面
模拟类似于HttpSession这种需要设定过期时间的功能
发布、订阅消息系统
定时器、计数器

2.3 Redis下载网站

2.4Redis使用群体

目前全球最大的 Redis 用户是新浪微博,在新浪有 200 多台物理机,400 多个端口正在运行着 Redis, 有 +4G 的数据跑在 Redis 上来为微博用户提供服务。

2.5Redis的部署场景

1.应用程序直接访问 Redis 数据库

2. 应用程序直接访问 Redis,只有当 Redis 访问失败时才访问 MySQL

2.6Redis与其他数据库和软件的对比【了解一下;后续详解】

数据库和缓存服务器的特性与功能

名称类型数据存储选项查询类型附加功能
MySQL关系数据库每个数据库可以包 含多个表,每个表 可以包含多个行; 可以处理多个表的 视图(view);支 持空间(spatial) 和第三方扩展SELECT、 INSERT、 UPDATE、 DELETE、函数、 存储过程支持ACID性质 (需要使用 InnoDB),主从 复制和主主复制 (master/master replication)
memcached使用内存存 储的键值缓 存键值之间的映射创建命令、读取 命令、更新命 令、删除命令以 及其他几个命令为提升性能而设的 多线程服务器
MySQL关系数据库每个数据库可以包 含多个表,每个表 可以包含多个行; 可以处理多个表的 视图(view);支 持空间(spatial) 和第三方扩展SELECT、 INSERT、 UPDATE、 DELETE、函数、 存储过程支持ACID性质 (需要使用 InnoDB),主从 复制和主主复制 (master/master replication)
PostgreSQL关系数据库每个数据库可以包 含多个表,每个表 可以包含多个行; 可以处理多个表的 视图;支持空间和 第三方扩展;支持 可定制类型SELECT、 INSERT、 UPDATE、 DELETE、内置函 数、自定义的存 储过程支持ACID性质, 主从复制,由第三 方支持的多主复制 (multi-master replication)
MongoDB使用硬盘存 储(ondisk)的非 关系文档存 储每个数据库可以包 含多个表,每个表 可以包含多个无 schema(schemaless)的BSON文档创建命令、读取 命令、更新命 令、删除命令、 条件查询命令等支持map-reduce 操作,主从复制, 分片,空间索引 (spatial index)

 

3. Redis安装【基于CentOS 7.3 x86-64 系统安装 】

 S1:rpm包安装

配置epel的yum源
yum install http://mirrors.163.com/centos/7.3.1611/extras/x86_64/Packages/epel-release-7-
9.noarch.rpm
在线yum安装
yum install redis #安装完毕目前是redis-3.2.3-1.el7.x86_64.rpm
安装最新版本使用remi
yum install ftp://rpmfind.net/linux/remi/enterprise/7/remi/x86_64/redis4.0.1-1.el7.remi.x86_64.rpm
启动服务
systemctl start redis

systemctl enable redis
验证测试
[root@localhost ~]# netstat -lnupt | grep :6379
       tcp        0      0 127.0.0.1:6379          0.0.0.0:*               
LISTEN      11413/redis-server 

[root@localhost ~]# ps -ef | grep redis
       redis     11413      1  0 10:46 ?        00:00:03 /usr/bin/redis-server 
127.0.0.1:6379

[root@localhost ~]# lsof -i tcp:6379
       COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME       redis-ser 11413 redis   6u IPv4  29352     0t0 TCP localhost:6379 
(LISTEN)
登录
[root@localhost ~]# redis-cli 
127.0.0.1:6379> help
redis-cli 4.0.1
To get help about Redis commands type:
            "help @<group>" to get a list of commands in <group>
            "help <command>" for help on <command>
            "help <tab>" to get a list of possible help topics
            "quit" to exit
To set redis-cli preferences:
            ":set hints" enable online hints
            ":set nohints" disable online hints
Set your preferences in ~/.redisclirc
        
127.0.0.1:6379> quit

S2:源码安装

下载
[root@localhost ~]# curl -O http://download.redis.io/releases/redis4.0.1.tar.gz
解压
[root@localhost ~]# tar xf redis-4.0.1.tar.gz -C /usr/local/src/
安装
[root@localhost ~]# cd /usr/local/src/redis-4.0.1/

[root@localhost redis-4.0.1]# yum install gcc gcc-c++ make -y

[root@localhost redis-4.0.1]# make

[root@localhost redis-4.0.1]# make install
启动
[root@localhost redis-4.0.1]# mkdir -p /etc/redis

[root@localhost redis-4.0.1]# cp redis.conf /etc/redis

[root@localhost redis-4.0.1]# cd

[root@localhost ~]# sed -i.bak 's/daemonize no/daemonize yes/' /etc/redis/redis.conf 


[root@localhost ~]# redis-server /etc/redis/redis.conf
            5448:C 12 Aug 11:54:21.743 # oO0OoO0OoO0Oo Redis is starting 
oO0OoO0OoO0Oo

            5448:C 12 Aug 11:54:21.743 # Redis version=4.0.1, bits=64, 
commit=00000000, modified=0, pid=5448, just started
            5448:C 12 Aug 11:54:21.743 # Configuration loaded

S3:Redis命令行客户端

发送命令
redis-cli -h 127.0.0.1 -p 6379

redis-cli PING

redis-cli
命令返回值
状态回复,e.g. >PING2.3 Redis配置 
           错误恢复, e.g. >ECMD
           整数回复, e.g. >INCR foo
           字符串回复,e.g. >GET foo   >GET notexists`
           多行字符串回复,e.g. >KEYS *

S4:源码配置服务脚本:

#1、创建用户和组

groupadd -g 935 -r redis

useradd -u 935 -g 935 -r -d /var/lib/redis -c “redis server” -s /sbin/nologin redis

mkdir -p /var/lib/redis

chown -R redis /var/lib/redis

chmod -R 700 /var/lib/redis
#2、修改配置文件
/etc/redis/redis.conf

               
dir /var/lib/redis/
               
daemonize no
#3、创建服务脚本
           
[root@localhost ~]# vim /usr/lib/systemd/system/redis.service 

[Unit]
Description=Redis persistent key-value database
After=network.target

[Service]
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf --daemonize no
ExecStop=/usr/bin/kill -9 `pidof redis-server`
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target


[root@localhost ~]# systemctl daemon-reload【重新加载单元文件/更新服务状态】

 ...\sin \cos \tan 

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部