Redis: REmote DIctionary Server(远程字典服务器)c语言开发的,是一个高性能的(key-value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前热门的NoSQL数据库之一,也叫做数据结构服务器。
一、与其他(key-value)缓存产品相比有以下三个特点:
1.Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
2.Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
3.Redis支持数据的备份,即master-slaver模式的数据备份
二、CAP:
c:Consistency(强一致性)
a:Availability(可用性)
p:Partition tolerance(分区容错性)
三、 Redis基础知识
Redis是单进程的:单进程模型来处理客户端的请求。对读写等事件的响应是通过对epoll函数的包装来做到的。 Redis的实际处理速度完全依靠主进程的执行效率。Epoll是Linux内核为处理大批量文件描述符而做了改进 的epoll,是Linux下多路复用IO接口selectpoll的增强版本,它能显著提高程序在大量并发连接中只有少 量活跃的情况下的系统CPU利用率。
默认16个数据库,类似数组下标从零开始,初始默认使用零号库
select index 命令切换数据库 select 0
DBsize 查看当前数据库的key的数量
flushdb 清空当前库 flushall 清空所有库
统一密码管理,16个库都是同样的密码,要么都OK要么一个也连不上
Redis索引都是从零开始
四、 Redis数据类型:
五大数据类型:String(字符串)
Hash (哈希 类似java里的map)
List (列表)
Set (集合)
Zset (sorted set:有序集合)
String是redis最基本的类型,可以理解为与Memcached一模一样的类型,一个key对应一个value。
String类型是二进制安全的。意思是redis的String可以包含任何数据。比如jpg图片或者序列化的对象。
String类型是redis最基本的数据类型,一个redis中字符串value最多可以是512M。
Redis Hash是一个键值对集合。
Redis Hash是一个String类型的filed和value的映射表,hash特别适合用于存储对象
每个hash可以存储2^32-1键值对(40多亿)。
Redis List 列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部或者尾部。它的底层实际是个链表。
列表最多可存储 2^32-1元素 (4294967295, 每个列表可存储40多亿)
Redis的set是String类型的无序集合。且不允许重复的成员,它是通过HashTable实现的
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
Redis的zset和set一样是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。
redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。