缓存技术—redis

一、redis介绍

1.什么是NoSQL

NosQL (Not-Only:sQL),泛指非关系型的数据库(关系型数据库: 以二维表形式存储数据)

非关系型的数据库现在成了一个极其热门的新领域,发展非常迅速。而传统的关系数据库在应付超大规模和高并发的网站已经显得力不从心,暴露了很多难以克服的问题,NOSOL 数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。例如:Highperformance-·对数据库高并发读写的需求;

对于每秒要达到上万次读写请求。关系数据库应付上万次 SOL 查询还勉强顶得住,但是应付上万次 SOL 写数据请求,硬盘I0 就已经无法承受了。"

一些主流的NOSQL产品:

NoSQL数据库的四大分类如下:

1.键值(Key-Value)存储数据库

相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB

典型应用:内容缓存,主要用于处理大量数据的高访问负载。

数据模型:一系列键值对

优势:快速查询

劣势:存储的数据缺少结构化

2.列存储数据库

相关产品:Cassandra, HBase, Riak

典型应用:分布式的文件系统

数据模型:以列簇式存储,将同一列数据存在一起

优势:查找速度快,可扩展性强,更容易进行分布式扩展

劣势:功能相对局限

3.文档型数据库

相关产品:CouchDB、MongoDB

典型应用:Web应用(与Key-Value类似,Value是结构化的)

数据模型:一系列键值对

优势:数据结构要求不严格

劣势:查询性能不高,而且缺乏统一的查询语法

4.图形(Graph)数据库

相关数据库:Neo4J、InfoGrid、Infinite Graph

典型应用:社交网络

数据模型:图结构

优势:利用图结构相关算法。

劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。

2.redis历史发展

2008 年,意大利的一家创业公司 Merzia 推出了一款基于 MysQL的网站实时统计系统 LLOOGG,然而没过多久该公司的创始人·Salvatore·Sanfilippo 便对 MySQL 的性能感到失望,于是他决定亲自为 LLOOGG 量身定做一个数据库,并于2009 年开发完成,这个数据库就是 Redis。不过 Salvatore-Sanfilippo 并不满足只将 Redis 用于 LLOOGG 这一款产品,而是希望更多的人使用它,于是在同一年 Salvatore· Sanfilippo 将 Redis 开源发布,并开始和 Redis 的另一名主要的代码贡献者 Pieter·Noordhuis 一起继续着 Redis 的开发,直到今天。

"Salvatore Sanflippo 自己也没有想到,短短的几年时间,Redis 就拥有了庞大的用户群体。在 2012 年一份数据库的使用情况调查,结果显示有近12%的公司在使用 Redis。国内如新浪微博、街旁网、知乎网,国外如GitHub、Stack-Overflow.Flickr 等都是 Redis 的用户。"

VMware 公司从 2010 年开始赞助 Redis 的开发,· Salvatore·Sanfilippo 和 ieter Noordhuis 也分别在3 月和5月加入VMware,全职开发 Redis。

3.什么是redis

Redis 是用 C 语言开发的一个开源的高性能键值对 (key-value)数据库。redis 是将数据存放到内存中,由于内容存取速度快所以 redis,被广泛应用在互联网项目中
优点: 存取速度快,官方称读取速度会达到 30 万次每秒,写速度在 10 万次每秒最有,具体限制于硬件缺点:对持久化支持不够良好,所以 redis.一般配合传统的关系型数据库使用。"

4.redis应用场景

缓存(数据查询)。(最多使用)

分布式集群架构中的 session 分离。

聊天室的在线好友列表。

任务队列。 (秒杀、抢购、12306 等等)

网站访问统计。

二、redis多数据库测试

一个Redis实例可以包括多个数据库,客户端可以指定连接某个redis实例的哪个数据库,就好比一个mysql中创建多个数据库,客户端连接时指定连接哪个数据库。

一个redis实例最多可提供16个数据库,下标从0 到15 ,客户端默认连接第0号数据库,也可以通过select选择连接哪个数据库,如下连接1号库:

在1号库中查询上节设置的数据,结果查询不到:

重新选择第0号数据库,查询数据:

如果选择一个不存在数据库则会报错:

注意:redis 不支持修改数据库的名称,只能通过select 0 、select 1... 选择数据库。

注意:

在0号数据库存储数据,在1号数据库执行清空数据命令却把0号数据库的数据给清空了:

建议:不同的应用系统要使用不同的redis 实例而不是使用同一个redis 实例下的不同数据库。

相关推荐
YashanDB1 小时前
【YashanDB知识库】XMLAGG方法的兼容
数据库·yashandb·崖山数据库
独行soc1 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍11基于XML的SQL注入(XML-Based SQL Injection)
数据库·安全·web安全·漏洞挖掘·sql注入·hw·xml注入
风间琉璃""2 小时前
bugkctf 渗透测试1超详细版
数据库·web安全·网络安全·渗透测试·内网·安全工具
drebander2 小时前
SQL 实战-巧用 CASE WHEN 实现条件分组与统计
大数据·数据库·sql
IvorySQL2 小时前
IvorySQL 4.0 发布:全面支持 PostgreSQL 17
数据库·postgresql·开源数据库·国产数据库·ivorysql
18号房客3 小时前
高级sql技巧进阶教程
大数据·数据库·数据仓库·sql·mysql·时序数据库·数据库架构
Dawnㅤ3 小时前
使用sql实现将一张表的某些字段数据存到另一种表里
数据库·sql
张声录13 小时前
【ETCD】【实操篇(十二)】分布式系统中的“王者之争”:基于ETCD的Leader选举实战
数据库·etcd
运维&陈同学3 小时前
【模块一】kubernetes容器编排进阶实战之基于velero及minio实现etcd数据备份与恢复
数据库·后端·云原生·容器·kubernetes·etcd·minio·velero
有态度的马甲3 小时前
一种基于etcd实践节点自动故障转移的思路
数据库·etcd