redis(1)-简介

redis简介
Redis[1]是一种基于键值对(key-value) 的NoSQL数据库, 与很多键值对数据库不同的是, Redis中的值可以是由string(字符串) 、 hash(哈希) 、list(列表) 、 set(集合) 、 zset(有序集合) 、 Bitmaps(位图) 、HyperLogLog、 GEO(地理信息定位) 等多种数据结构和算法组成, 因此Redis可以满足很多的应用场景, 而且因为Redis会将所有数据都存放在内存中, 所以它的读写性能非常惊人。 不仅如此, Redis还可以将内存的数据利用快照和日志的形式保存到硬盘上, 这样在发生类似断电或者机器故障的时候, 内存中的数据不会“丢失”。 除了上述功能以外, Redis还提供了键过期、 发布订阅、 事务、 流水线、 Lua脚本等附加功能。 总之, 如果在合适的场景使用好Redis, 它就会像一把瑞士军刀一样所向披靡。
redis特性

1.速度快
正常情况下, Redis执行命令的速度非常快, 官方给出的数字是读写性能可以达到10万/秒, 当然这也取决于机器的性能, 但这里先不讨论机器性能上的差异, 只分析一下是什么造就了Redis除此之快的速度, 可以大致归4点 1.C语言编写 2.单线程 3.内存操作 4代码优秀。
2.基于键值对的数据结构服务器
几乎所有的编程语言都提供了类似字典的功能, 例如Java里的map、Python里的dict, 类似于这种组织数据的方式叫作基于键值的方式, 与很多键值对数据库不同的是, Redis中的值不仅可以是字符串, 而且还可以是具体的数据结构, 这样不仅能便于在许多应用场景的开发, 同时也能够提高开发效率。 Redis的全称是REmote Dictionary Server, 它主要提供了5种数据结构: 字符串、 哈希、 列表、 集合、 有序集合。
3.丰富的功能
除了5种数据结构, Redis还提供了许多额外的功能:
·提供了键过期功能, 可以用来实现缓存。
·提供了发布订阅功能, 可以用来实现消息系统。
·支持Lua脚本功能, 可以利用Lua创造出新的Redis命令。
·提供了简单的事务功能, 能在一定程度上保证事务特性。
·提供了流水线(Pipeline) 功能, 这样客户端能将一批命令一次性传到Redis, 减少了网络的开销。
4.简单稳定
Redis的简单主要表现在三个方面。 首先, Redis的源码很少, 早期版本的代码只有2万行左右, 3.0版本以后由于添加了集群特性, 代码增至5万行左右, 相对于很多NoSQL数据库来说代码量相对要少很多, 也就意味着普通的开发和运维人员完全可以“吃透”它。 其次, Redis使用单线程模型, 这样不仅使得Redis服务端处理模型变得简单, 而且也使得客户端开发变得简单。 最后, Redis不需要依赖于操作系统中的类库(例如Memcache需要依赖libevent这样的系统类库) , Redis自己实现了事件处理的相关功能。Redis虽然很简单, 但是不代表它不稳定。 以笔者维护的上千个Redis为例, 没有出现过因为Redis自身bug而宕掉的情况。
5.客户端语言多
Redis提供了简单的TCP通信协议, 很多编程语言可以很方便地接入到Redis, 并且由于Redis受到社区和各大公司的广泛认可, 所以支持Redis的客户端语言也非常多, 几乎涵盖了主流的编程语言, 例如Java、 PHP、Python、 C、 C++、 Nodejs等。
6.持久化
通常看, 将数据放在内存中是不安全的, 一旦发生断电或者机器故障,重要的数据可能就会丢失, 因此Redis提供了两种持久化方式: RDB和AOF, 即可以用两种策略将内存的数据保存到硬盘中 , 这样就保证了数据的可持久性。
7.主从复制
Redis提供了复制功能, 实现了多个相同数据的Redis副本, 复制功能是分布式Redis的基础。
8.高可用和分布式
Redis从2.8版本正式提供了高可用实现Redis Sentinel, 它能够保证Redis
节点的故障发现和故障自动转移。 Redis从3.0版本正式提供了分布式实现
Redis Cluster, 它是Redis真正的分布式实现, 提供了高可用、 读写和容量的
扩展性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值