频道栏目
首页 > 资讯 > 其他综合 > 正文

Redis概述

17-07-24        来源:[db:作者]  
收藏   我要投稿

Redis的定义

Redis是Remote Dictionary Server(远程字典服务器)的缩写,它以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容,用C语言编写的。

Redis是开源免费的,支持多语言的API(C/C++/C#/Java/Javascript/Lua/PHP/Python/Ruby/Go),具有原子性,可持久化的KV数据库

Redis遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。

Redis的特点

1.丰富的数据结构

字符串(String) 散列(hash) 列表(list) 集合(set) 有序集合(zset)

2. 单进程模型

Redis使用单进程模型来处理客户端的请求。对读写等事件的响应是通过对epoll函数的包装来做到的。

Redis的实际处理速度完全依靠主进程的执行效率

注:epoll是Linux内核为处理大批量文件描述符而作了改进的epoll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。

3.数据库个数

Redis默认16个数据库,类似数组下表从零开始,初始默认使用0号库(集群中只能使用0号库)

4.持久化与数据备份

持久化方式

RDB AOF

数据备份的方式

主从复制

Redis的优点

对数据高并发读写

对海量数据的高效率存储和访问

对数据的可扩展性(水平、加一台服务器和垂直、升级内存)和高可用性

注:可扩展性分为水平扩展与垂直扩展,例如:加一台服务器就叫水平扩展;升级服务器的内存称为垂直扩展。

Redis与Memorycache的区别

1.Redis是单线程的

Redis使用单线程,而Memcached是多线程,

Redis保证了对于非复合的操作,没有线程安全问题。虽然Redis使用的是单线程,但是Redis 足够快。

2.Redis申请内存

Redis使用现场申请内存的方式来存储数据,并且可以配置虚拟内存;

Memcached使用预分配的内存池的方式。

3.Redis可以持久化

Redis 与Memcached一样,为了保证效率,数据都是缓存在内存中。

Redis会周期性的把更新的数据写入磁盘或者把修改 操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步,而Memcached只是存放在内存中,服务器故障关机后数据就会消失,所以Redis的容灾性会更强。

4.Redis支持5种数据类型

Redis支持五种数据类型:string(字符串),list(链表), Hash(哈希),set(集合)及zset(有序集合)。

Memcached只是简单的key与value

Redis的应用场景

1.取最新N个数据的操作

比如典型的博客网站的最新文章,通过下面方式,我们可以将最新的5条评论的ID放在Redis的List集合中,并将超出集合部分从数据库获取。

2.排行榜应用,取TOP N操作

取最新N个数据的操作以时间为权重,这个是以某个条件为权重,比如按顶的次数排序,这时候就需要我们的sorted set出马了,将你要排序的值设置成sorted set的score,将具体的数据设置成相应的value,每次只需要执行一条ZADD命令即可。

3.需要精准设定过期时间的应用

比如你可以把上面说到的sorted set的score值设置成过期时间的时间戳,那么就可以简单地通过过期时间排序,定时清除过期数据了,不仅是清除Redis中的过期数据,你完全可以把Redis里这个过期时间当成是对数据库中数据的索引,用Redis来找出哪些数据需要过期删除,然后再精准地从数据库中删除相应的记录。

4.计数器应用

Redis的命令都是原子性的,你可以轻松地利用INCR,DECR命令来构建计数器系统。

5.Uniq操作,获取某段时间所有数据排重值

这个使用Redis的set数据结构最合适了,只需要不断地将数据往set中扔就行了,set意为集合,所以会自动排重。

6.实时系统,反垃圾系统

通过上面说到的set功能,你可以知道一个终端用户是否进行了某个操作,可以找到其操作的集合并进行分析统计对比等。

7.Pub/Sub构建实时消息系统

Redis的Pub/Sub系统可以构建实时的消息系统,比如很多用Pub/Sub构建的实时聊天系统的例子。

8.构建队列系统

使用list可以构建队列系统,使用sorted set甚至可以构建有优先级的队列系统。

9.缓存

性能优于Memcached,数据结构更多样化。

相关TAG标签
上一篇:常用SQL命令
下一篇:MYSQL千万级数据量的优化方法积累
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站