各位大神,这个是面试题啊,小弟是菜鸟,最好,用比较通俗的话说,最好不要直接 百度copy 其他人的,最好是自己处理总结过的,因为,本人已经百度了很多次了。
学习是最好的投资!
是一种非关系型数据库(NoSQL),是用C/C++编写的,redis的特点:
采用简单数据或以键值索引的哈希表,但也支持复杂操作,例如 ZREVRANGEBYSCORE。
INCR & co (适合计算极限值或统计数据)
支持 sets(同时也支持 union/diff/inter)
支持列表(同时也支持队列;阻塞式 pop操作)
支持哈希表(带有多个域的对象)
支持排序 sets(高得分表,适用于范围查询)
Redis支持事务
支持将数据设置成过期数据(类似快速缓冲区设计)
Pub/Sub允许用户实现消息机制
至于它有什么用或者怎么用:通常局限点来说,Redis也以消息队列的形式存在,作为内嵌的List存在,满足实时的高并发需求。而通常在一个电商类型的数据处理过程之中,有关商品,热销,推荐排序的队列,通常存放在Redis之中,期间也包扩Storm对于Redis列表的读取和更新。
可以参考这篇文章:Redis应用场景
redis是内存kv存储,跟memcache有点类似,很多时候可以互换。一般用于数据库前面加一层缓存。比如简单的members表,每次请求可能都要读取members表,频繁的读取可以用redis来缓存。
row=redis->get("m_"..id) if not row then sql="select * from members where id='"..id.."'"; row=sdo:fetch(sql); redis->set("m_"..id,row); end
这个是基本的,也是用的最多的。redis还有队列,比如一个请求记录用户的操作请求,用redis->lpush(op),从左加入队列。一个后台服务可以从redis队列读取,op=redis->rpop(op),这个就可以完成简单的先来先服务策略。另外redis也可以持久化,就是把内存的kv数据保存到硬盘,断电之后可以从内存加载。个人不推荐使用redis持久化,关掉持久化,仅仅用来做个cache。
是一种非关系型数据库(NoSQL),是用C/C++编写的,redis的特点:
采用简单数据或以键值索引的哈希表,但也支持复杂操作,例如 ZREVRANGEBYSCORE。
INCR & co (适合计算极限值或统计数据)
支持 sets(同时也支持 union/diff/inter)
支持列表(同时也支持队列;阻塞式 pop操作)
支持哈希表(带有多个域的对象)
支持排序 sets(高得分表,适用于范围查询)
Redis支持事务
支持将数据设置成过期数据(类似快速缓冲区设计)
Pub/Sub允许用户实现消息机制
至于它有什么用或者怎么用:
通常局限点来说,Redis也以消息队列的形式存在,作为内嵌的List存在,满足实时的高并发需求。而通常在一个电商类型的数据处理过程之中,有关商品,热销,推荐排序的队列,通常存放在Redis之中,期间也包扩Storm对于Redis列表的读取和更新。
可以参考这篇文章:Redis应用场景
redis是内存kv存储,跟memcache有点类似,很多时候可以互换。一般用于数据库前面加一层缓存。
比如简单的members表,每次请求可能都要读取members表,频繁的读取可以用redis来缓存。
这个是基本的,也是用的最多的。
redis还有队列,比如一个请求记录用户的操作请求,用redis->lpush(op),从左加入队列。一个后台服务可以从redis队列读取,op=redis->rpop(op),这个就可以完成简单的先来先服务策略。
另外redis也可以持久化,就是把内存的kv数据保存到硬盘,断电之后可以从内存加载。
个人不推荐使用redis持久化,关掉持久化,仅仅用来做个cache。