REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
Redis的特点什么是?
a、支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算)
b、支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手 段。
c、支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制, master-slave机制是Redis进行HA的重要手段。
d、单进程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。
Redis的数据类型
String,Hash,List,Set,SortedSet(有序集合zset)。
Redis常用命令:
1.hset 存储一个哈希键值对的集合
2. hget获取一个哈希键的值
3.hdel 删除一个或多个字段
4.hgetall 获取一个哈希是键值对的集合
5.lpush key value向链表左侧添加
6.rpush key value向链表右侧添加
7.lpop key 从左边移出一个元素
8.rpop key 从右边移出一个元素
9.keys * 返回所有的key 可以加*通配
10.exists key判断string类型一个key是否存在 如果存在返回1 否则返回0
redis 速度为什么这么快呢?
其原因如下:
1.纯内存的操作(redis的数据操作是在内存基础上,在此有一个误区,redis的数据持久化操作和内存操作不是一个线程操作)
2.多路复用线程模式(我们可能认为redis的快就是单线程操作,其实不然,如果单线程快的话,为什么还要多线程呢,它采用 IO 多路复用机制同时监听多个 socket,根据 socket 上的事件来选择对应的事件处理器进行处理)
3.灵活的数据结构(redis有五种数据类型,足以满足平常开发需求)
4.合理的数据编码格式(redis的编码格式也是五种,能够合理存储不同结果,有效的节省了内存的占用)