在项目中使用redis的原因

1:redis简介:

redis是Nosql数据库中使用较为广泛的非关系内存数据库,redis内部是一个key-value存储系统。它支持存储的value类型相对更多,包括string(字符串),list(链表),set(集合),zset(sorted set-有序集合)和hash(哈希类型,类似java中的map)。redis基于内存运行并持久化的NoSQL数据库之一,也被人们称为数据库结构服务器。

2:互联网时代背景下,为什么使用NoSQL?

1)当数据量的总大小一个机器放不下时。

2)数据索引一个机器的内存放不下时。

3)访问量(读写混合)一个实例放不下

单时代模型:

如果每次存储成千上万条数据,这样会导致Mysql的性能很差,存储以及读取速度很慢,然后就演变成缓存+mysql+垂直拆分的方式。

cache作为中间缓存:

将所有的数据先保存到缓存中,然后再存入mysql中,减少数据库压力,提高效率。但是当数据再次增加到又一个量级,上面的方式也不能满足需求,由于数据库的写入压力增加,Memcached只能缓解数据库的读取压力。读写集中在一个数据库不堪重负,大部分网站开始使用主从复制技术来达到读写分离,以提高读写性能和读写的可扩展性。Mysql的master-slave模式成为这个时候的网站标配。

主从离模式

在redis的高速缓存,mysql的主从复制,读写分离的基础之上,这是mysql主库的写压力开始出现瓶颈,而数据量的持续猛增,由于MyISAIM使用表锁,在高并发下会出现严重问题,大量的高并发mysql应用开始使用InnobDB引擎代替MyISAM。

memcached和redis的比较:

redis的数据结构:

2.5Redis的数据结构:

前言:Redis中存储的数据都为字符串格式的。下面来分别介绍Redis中常用的数据结构。

  • string数据结构

太简单了,略过。

  •  list数据结构

概述: 什么是list ,list是一种数据结构,可以当做队列和栈来使用。

当你从左边添加数据,再从左边取数据,就模拟出栈;当你从右边添加数据,再从左边取数据,就模拟出队列。因此Redis真的很强大,看到栈和队列这样的数据结构,你难道就不激动吗?这样的数据结构太TM好了,能帮我们处理很多棘手的问题。这里我先卖个关子,下面会介绍我在项目中是如何使用Redis解决棘手的问题。

  • set集合

和list结构差不多,这里不再啰嗦。

下面就是操作set的一些命令。

  • hash数据结构

图中的"user:100"就相当于key,而它所指向的类似于表结构的数据就是value,这样的数据结构有利于存储对象数据。也是非常常用的方法。

 

 

 注意:

redis指令不区分大小写,但是出于规范考虑,应该使用大写
redis中存放的键是区分大小写的.

 Redis常用命令文档:http://redis.readthedocs.io/en/2.6/

原文地址:https://www.cnblogs.com/zhouzetian/p/8590837.html