关于Redis

redis是什么?

redis是一个开源的,使用c语言编写的,支持网络交互的,可基于内存也可持久化化的Key-Value数据库。

redis的官网地址:redis.io 域名后缀io属于国家域名,是British Indian Ocean Terriory ,即英属印度洋领地,目前,Vmware在资助着redis项目的开发和维护。

redis的作者,他叫Salvatore Sanfilippo,来自意大利的西西里岛,现在居住在卡塔尼亚。目前供职于Pivotal公司。他使用的网名是antirez,如果你有兴趣,可以去他的博客逛逛,地址是antirez.com,当然也可以去follow他的github,地址是http://github.com/antirez

存储类型包含:

string(字符串), list(链表),set(集合),zset(sorted set --有序集合),hash(哈希类型)这些数据类型都支持push/pop  add/remove及取交集、并集和差集等,这些操作都是原子性的。支持各种不同方式的排序。数据都是缓存在内存中,redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主-从)复制。

redis的优点

1.配合关系型数据库做高速缓存

高频次,热门访问的数据,降低数据库IO分布式架构,做session共享。

2.持久化,和多样化数据结构,存储特定数据。例如

最新N个数据,List按自然排序

排行榜,top N   zset有序集合

时效性数据,手机验证码  expire 过期

计数器,秒杀     原子性 自增方法INCR

取出大量数据中的重复数据 set集合

构建队列  list

发布订阅消息系统  pub/sub模式

什么是缓存?

举例:张三从浏览器查询数据,李四查询相同的数据,浏览器还需要重复获取,缓存的作用是,张三查询完数据后,数据保留在缓存里,李四查询的时候,直接从缓存里获取,快速而且降低浏览器压力。

为什么要使用noSql数据库

nosql = not only sql

1.无法应对每秒上万次的读写请求,硬盘IO此时也将变为性能瓶颈

2.表中存储记录数量有限,横向可扩展能力有限,纵向数据可承受能力也是有限的,面对海量数据,势必涉及到分库分表,难以维护
大数据查询SQL效率极低,数据量到达一定程度时,查询时间会呈指数级别增长

3.难以横向扩展,无法简单地通过增加硬件、服务节点来提高系统性能对于需要24小时不间断提供服务的网站来说,数据库升级、扩展将是一件十分麻烦的事,往往需要停机维护,数据迁移,为了避免服务间断,如果网站使用服务器集群,则根据集群策略,需要相应的考虑主从一致性、集群扩展性等一系列问题


NoSQL数据库分类:

1.键值存储数据库

代表数据库:Redis

适用场景:会话信息,用户配置信息,购物车

2.列存储数据库

代表数据库:BigTable,Cassandra,HBase

适用场景:事件记录,内容管理,博客平台

不适合需要ACID事务的场合

3.文档型数据库(bson格式,和json一样)

代表数据库:MongoDB

适用场景:事件记录,内容管理,博客平台,网站分析,实时分析,电子商务应用

4.图数据库:可以使用图结构相关算法,比如最短路径寻址

代表数据库:Neo4j

适用场景:社交网络,推荐引擎,基于位置的服务

redis缓存数据库产生的背景

我们现在的项目架构中,基本上是Web服务器(Tomcat)和数据库独立部署,独占服务器资源,随着用户数的增长,并发读写数据库,会加大数据库访问压力,导致性能的下降,严重时直接导致系统宕机,例如:

此时,我们可以在Tomcat同服务器上中增加本地缓存,并在外部增加分布式缓存,缓存热门数据。也就是通过缓存能把绝大多数请求在读写数据库前拦截掉,大大降低数据库压力。例如:

 基于这样的一种架构设计,于是类似redis的一些分布式数据库就诞生了。

版本及参考说明

Redis的次版本号(第一个小数点后的数字)为偶数的版本是稳定版本(2.4、2.6等),奇数为非稳定版本(2.5、2.7),一般推荐在生产环境使用稳定版本。最新版本6.2.2,新增了stream的处理方式,性能更高。Redis官方是不支持windows平台的,windows版本是由微软自己建立的分支,基于官方的Redis源码上进行编译、发布、维护的,所以windows平台的Redis版本要略低于官方版本。

Redis 相关参考网址如下所示:

Bootnb 相关:https://www.runoob.com/redis/redis-tutorial.html
Redis 官网:https://redis.io/
源码地址:https://github.com/redis/redis
Redis 在线测试:http://try.redis.io/
Redis 命令参考:http://doc.redisfans.com/

docker start redis01   启动redis服务

docker exec -it redis01 bash    进入redis容器

redis-cli 或者 redis-cli -p 6379 或者 redis-cli -p 6379 -a password    登录本地redis

info  查看redis信息

shutdown 关闭redis    这个指令有保存的作用

help   可以基于help指令查看相关指令帮助

help type

key *   查看redis中的key

flushdb  清除当前数据库数据

flushall   清除所有数据库据

expire  控制redis中key的有效时长,例如秒杀操作的计时,缓存数据的有效时长等

ttl  查看key的剩余时间,当返回值为-2时,表示键被删除

当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1

以下是各个类型的常规用指令

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值