特点:
一:速度快
1、 由c语言编写,更快解析语言代码;
2、 为了保证效率数据都是缓存在内存中,也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件;
3、 采用单线程,避免了不必要的上下文切换和竞争条件,不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;
4、 数据结构简单,对数据操作也简单;
5、 使用多路I/O复用模型,非阻塞I/O。
二:简单稳定
1、 数据模型为key-value;
2、 支持事务,操作都是原子性。
三:支持多语言
如php、java、python等。
优点:
1、 高并发读写的性能;
2、 多种数据结构支持,如支持string,list,set,sorted set,hash;
3、 减轻数据库负担,有集合计算功能(优于普通数据库和同类别产品);
4、 支持数据持久化,支持AOF和RDB两种持久化方式;
5、 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离。
缺点:
1、 Redis不具备自动容错和恢复功能;
2、Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。
平台使用:
新浪微博 Redis
Goodle Bigtable
Amazon SimpleDB
淘宝数据平台 Tair
优酷视频 MongoDB
飞信空间 HandleSocket
视觉中国网站 MongoDB
Nosql比较:
常用场景:
1、排行榜;
2、计数器应用;
3、获取共同好友等;
redis与memcache比较:
1、存储类型:memcached所有的值均是简单的字符串,而redis具有string,list,set,sorted set,hash等类型;
2、持久化:memcache数据是存储到内存里面,一旦断电,或重启,则数据丢失。redis数据也是存储到内存里面的,但是可以持久化,周期性的把数据给保存到硬盘里面,导致重启,或断电不会丢失数据;
3、数据量:memcahce一个键存储的数据最大是1M,而redis的一个键值,存储的最大数据量是1G的数据量(string类型512M)。
4、灾难恢复:memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复;
5、Redis支持数据的备份,即master-slave模式的数据备份。
类型:
链接:http://doc.redisfans.com/
一、String (字符串)
string是redis最基本的类型
redis的string可以包含任何数据。包括jpg图片或者序列化的对象。一个String类型的value最大可以存储512M。
(1)、Set
描述:用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。
语法:set 键名称 值
例子:
(2)、Get
描述:用于获取指定 key 的值。如果 key 不存在,返回 nil 。如果key 储存的值不是字符串类型,返回一个错误。
语法:get 键值
例子:
(3)、incr
描述:将 key 中储存的数字值增一。
语法:incr key
(4)、incrby
描述:将 key 中储存的数字加上指定的增量值。
语法:incrby key 值
例子:
二:list(列表)
Redis列链是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
上进上出:栈,特点:数据先进后出
下进上出:队列,特点:数据先进先出
(1)、lpush
描述:从链表的头部添加元素
语法:lpush 链表的名称(键的名称)元素
例子:
(2)、lrange
描述:获取链表里面的元素
语法:lragne 链表的名称 开始下标 结束下标
例子:
注:表里面的元素是序号的(从0开始数),类似于索引数组,-1代表末尾。
(3)、rpush
描述:从链表的尾部添加元素
语法:rpush 链表的名称(键的名称) 元素
例子:
(4)、lpop
描述:从链表表的头部删除一个元素,返回删除的元素
语法:lpop 链表表的名称
例子:
(5)、ltrim
描述:保留指定范围的元素
语法:ltrim 链表的名称 开始下标 结束下标
例子:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!