初识redis

redis简介

  • redis是一种基于键值对key、value的NoSQL内存数据库,同时它会把内存的数据利用快照和日志的形式保存到硬盘上,即使发生断电,内存中的数据也不会完全丢失(会丢失未同步到硬盘上的数据)。redis执行命令的速度非常快,官方给出的数据是读写性能可以达到10w/s。这主要得益于它的数据是放在内存中的,同时redis基于c语言实现,这种贴近操作系统的语言,执行速度相对会更快。此外,redis的单线程架构,预防了多线程可能产生的并发竞争问题。
  • redis全称是Remote Dictionary Server,它主要提供了字符串、哈希表、列表、集合、有序集合这5中数据结构,并提供了键过期功能,可以用来实现缓存。提供了发布订阅功能,可以用来实现消息系统,还有流水线(Pipeline)功能,这样客户端能够一批命令一次性传到redis,能减少网络的开销。
  • 把数据放在内存始终是不够安全,一旦断电或者进程崩溃数据就会丢失,对此redis提供了两种持久化方式,rdb和aof,redis可以使用两种策略将内存的数据保存到硬盘中。redis还提供了复制功能,实现了多个相同数据的redis副本,这进一步保证了数据的安全可靠。redis从2.8版本正式提供了redis sentinel,它能够实现redis节点的故障发现和故障自动转移,在3.0版本提供了redis cluster,它是redis真正的分布式实现,提供了高可用(自动进行主从切换进行故障转移), 读写和容量的拓展性(可动态向集群增加、减少节点,实现水平扩缩容)。

redis的使用场景

  • 用作缓存。 缓存机制几乎在所有的大型网站都有使用,redis提供了键值过期时间设置,并提供了灵活控制最大内存和内存溢出后的淘汰策略,非常方便用于实现网站的缓存。
  • 排行榜、计数器系统。 redis提供了列表和有序集合数据结构,并且天然支持计数功能,合理运用这些数据结构能很好的服务于排行榜和计数器系统。
  • 消息队列系统。 消息队列系统具有业务解耦、非实时业务削峰等特性,可以说是一个大型网站必备的基础组件, redis提供了发布与订阅和阻塞队列的功能,虽然和专业的消息队列比还不够强大,但基本可以满足一般的消息队列功能。

redis不适合干啥

  • 从数据规模角度上看, redis更适合存放小规模数据。redis的数据是放在内存中,虽然现在内存已经足够便宜,但如果数据量非常大,比如几亿用户的行为数据,若使用redis来存储,经济成本还是相当高的。
  • 从数据冷热角度看,例如视频网站,视频信息基本上各个业务线都是经常操作的数据(热数据), 而用户的观看记录不一定是经常要访问的数据(冷数据),如果将这些冷数据放到redis上存储是对内存的一种浪费,而热数据放在redis里可以加快读写,也可以减轻后端存储的负载。

redis的安装

  redis能够兼容绝大部分的posix系统,例如linux,osx,freebsd,其中比较典型的是linux操作系统。 在linux安装软件,一种方法是通过各个操作系统的软件管理软件进行安装,如ubuntu的apt, 由于redis的更新速度较快,这些管理工具不一定能安装到最新的版本。所以推荐另一种方式:使用源码安装,源码安装redis也不复杂6步即可完成, 以3.0.7版本为例:

  • wget http://download.redis.io/releases/redis-3.0.7.tar.gz
  • tar xvf redis-3.0.7.tar.gz // 解压
  • ln -s redis-3.0.7 redis // 建立软连接 指向redis-3.0.7,这样是为了不把redis目录固定在指定版本上,有利于版本升级
  • cd redis
  • make // 编译
  • make install // 把编译后的二进制文件放到指定目录下 如/usr/local/bin, 方便在任何目录下执行redis命令

配置、操作redis

  redis安装后, 在src和/usr/local/bin目录下多了几个以redis开头的可执行文件,它们便是redis shell, 用于启动、停止、检测he修复redis的持久化文件以及检测redis性能。


初识redis_第1张图片
image.png
  • 启动redis。 有三种方法启动redis: 默认配置、运行配置、配置文件启动。 直接使用redis-server启动redis就是使用默认配置(redis目录下的redis.conf文件)。 redis-server --configKey1 configValue1 --configKey2 configValue2 , 属于运行配置。将配置写到指定文件里,redis-server redis.conf
初识redis_第2张图片
image.png
  • redis命令行客户端。 redis-cli -h {host} -p {port}是一种交互的方式。 redis-cli -h {host} -p {port} {command} 可以直接得到命令的返回结果。 注意: 如果-h没有参数 默认连接127.0.0.1,-p如果没有参数,默认为6379端口。
  • 停止redis服务, redis提供了shutdown命令来停止redis服务。 redis-cli shutdown。这种关闭进程的方式会先断开客户端的连接,然后生成持久化文件,是一种相对优雅的关闭方式。如果通过kill -9 强杀redis服务, 不但不会做持久化操作,还会造成缓冲区等资源不能优雅关闭,可能导致丢失数据。 shutdown还有一个参数,表示是否在关闭redis服务前生成持久化文件, redis-cli shutdown save|nosave 。

总结

本文介绍了redis的基本概念、使用场景、安装以及操作,属于概述性质的, 为了让大家对redis有个整体的认识,更多的内容和细节会在后面的文章一一介绍。

你可能感兴趣的:(初识redis)