Redis学习笔记 ——(1)为什么要学习redis
- Redis特性
- Redis使用场景
- Redis的安装
1. Redis特性
1.1 速度快
正常情况下,redis的执行效率非常快,官方给出的数字说读写性能可以达到10万/s,当然这也取决于机器的性能,下面总结一下Redis如此之快的原因。
- Redis的数据都是放在内存中的
- Redis说用C语言实现的,一般C语言实现的程序执行效果会更快
- Redis使用了单线程架构,预防了多线程可能产生的竞争问题
- Redis的源码非常优秀
1.2 基于键值对的数据结构服务器
几乎所有的编程语言都提供了类似字典都功能,例如java里的map,pyhton里的dict,与很多键值对不同的是,Redis中的不仅可以使字符串,而且还可以使具体的数据结构,这样既可以提高开发效率,又方便于应用到不同的开发场景当中。
1.3 丰富的功能
- 提供里键过期功能,可以用来实现缓存
- 提供来发布订阅功能,可以实现消息系统
- 支持Lua脚本,可以用Lua创造出新的Redis命令
- 提供简单的事务功能,能在一定程度上保证事务特性
- 提供了流水线功能,正义客户端就能将一批命令一次性传到Redis,减少了网络的开销。
1.4 简单稳定
Redis的简单主要体现在三个方面。
- 源码很少,早期的版本代码只有2万行左右,后续慢慢增加。
- 单线程模型,使得服务端处理模型非常简单,客户端的开发也变得简单
- Redis不需要依赖操作系统中的类库,自己实现了事务处理的相关功能。
1.5 客户端语言多
Redis提供了简单的TCP通信协议,很多编程语言可以方便的连接到Redis,现在主流的语言头提供了连接Redis 的功能,例如Java/Python/PHP/C++/Nodejs等
1.6. 持久化
通常数据存在内存中说不安全的,因此Redis提供了两种持久化的方式,RDB和AOF,可以用两种策略把内存的数据存放到硬盘中,保证了数据的可持久型。
1.7. 主从复制
Redis提供了复制功能,实现了多个相同数据的Redis副本,复制功能是分布式Redis的基础。
1.8. 高可用和分布式
Redis 从2.8版本正式提供了高可用实现Redis Sentinel,它能保证Redis 解ID那的故障发现和故障自动转移。
Redis 从3.0版本正式提供了分布式实现Redis Cluster,它是Redis真正的分布式实现,提供了高可用 /读写/容量大扩展性
2. Redis 使用场景
2.1 Redis可以做什么
- 缓存
几乎所有的大型网站都在使用缓存机制,合理的使用缓存不仅可以加快数据的访问速度,还可以有效的降低后端数据源的压力,Redis提供的键值对国企时间设置,提供了灵活控制最大内存和内存溢出后对淘汰策略。 - 排行榜系统
- 计数器应用
- 社交网络
赞/踩功能 共同好友/喜好/推送/下啦刷新等功能是社交网站等必备功能,由于社交网站访问量通常比较大,而且传统的关系性数据不太适合保存这种类型的数据,Redis提供的数据结构可以相对容易的实现这些功能。 - 消息队列系统
2.2 Redis不可以做什么
所有技术都有对应的应用场景和边界,也就是说Redis不是万金油,有适合它解决的问题,也有不适合它解决的问题。
站在数据规模的角度来看,数据可以分为大规模数据和小规模数据,Redis的数据说放在内存中的,虽然现在内存比较便宜,但是如果数据量非常大的很,每天有上千万的用户行为数据,对Redis来说,经济成本相当的高。
站在数据冷热的角度来看,数据分为热数据和冷数据,冷数据的读写就不适合Redis来进行操作。
3. Redis的安装
//下载安装包
wget http://download.redis.io/releases/redis-4.0.9.tar.gz
//解压
tar xzf redis-4.0.9.tar.gz
//建立软连接
ln -s redis-4.0.9 redis
cd redis
//编译
make
//安装
make install
//查看redis版本
redis-cli -v