admin管理员组文章数量:1794759
2024 RedisAnd Mysql基础与进阶操作系列(13)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
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下载网站
- Http://redis.io/
- Http://www.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源
代码语言:javascript代码运行次数:0运行复制yum install .3.1611/extras/x86_64/Packages/epel-release-7-
9.noarch.rpm
在线yum安装
代码语言:javascript代码运行次数:0运行复制yum install redis #安装完毕目前是redis-3.2.3-1.el7.x86_64.rpm
安装最新版本使用remi
代码语言:javascript代码运行次数:0运行复制yum install .0.1-1.el7.remi.x86_64.rpm
启动服务
代码语言:javascript代码运行次数:0运行复制systemctl start redis
systemctl enable redis
验证测试
代码语言:javascript代码运行次数:0运行复制[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)
登录
代码语言:javascript代码运行次数:0运行复制[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:源码安装
下载
代码语言:javascript代码运行次数:0运行复制[root@localhost ~]# curl -O .0.1.tar.gz
解压
代码语言:javascript代码运行次数:0运行复制[root@localhost ~]# tar xf redis-4.0.1.tar.gz -C /usr/local/src/
安装
代码语言:javascript代码运行次数:0运行复制[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
启动
代码语言:javascript代码运行次数:0运行复制[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命令行客户端
发送命令
代码语言:javascript代码运行次数:0运行复制redis-cli -h 127.0.0.1 -p 6379
redis-cli PING
redis-cli
命令返回值
代码语言:javascript代码运行次数:0运行复制状态回复,e.g. >PING2.3 Redis配置
错误恢复, e.g. >ECMD
整数回复, e.g. >INCR foo
字符串回复,e.g. >GET foo >GET notexists`
多行字符串回复,e.g. >KEYS *
S4:源码配置服务脚本:
代码语言:javascript代码运行次数:0运行复制#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
代码语言:javascript代码运行次数:0运行复制#2、修改配置文件
/etc/redis/redis.conf
dir /var/lib/redis/
daemonize no
代码语言:javascript代码运行次数:0运行复制#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【重新加载单元文件/更新服务状态】
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-09-20,如有侵权请联系 cloudcommunity@tencent 删除数据数据库存储mysql基础本文标签: 2024 RedisAnd Mysql基础与进阶操作系列(13)作者LJS你个小黑子这都还学不会嘛你是真爱粉嘛真是的 以后请别侮辱我家鸽鸽
版权声明:本文标题:2024 RedisAnd Mysql基础与进阶操作系列(13)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽] 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1754676031a1705065.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论