1、Redis基础理论
1、什么是Redis?
Redis是一种基于键值对的内存数据库,一种典型的NoSQL数据库,Redis在互联网行业得到了大量使用,从体量上来说,新浪微博是全球最大的Redis使用者。
2、Redis 特性有哪些?
Redis读写性能可以达到10万条每秒,为什么会这么快?
首先,Redis所有的数据都是存放在内存中的,这是Redis速度快的主要原因
其次,Redis是使用C语言实现的,有操作系统更近,速度相对更快。
第三,Redis使用了单线程架构,避免了多线程可能产生的竞争问题。
最后,Redis 源代码简洁,集性能与优雅与一身。
Redis是基于键值对的数据结构,简单灵活也可以提高开发效率,目前主要支持五种数据结构:字符串、哈希、列表、集合、有序集合。
提供了键过期功能,可以用来实现缓存,超过指定时间的键会自动被删除。
提供了发布订阅功能,可以用来实现消息系统。
支持Lua脚本功能,可以利用Lua创造出新的Redis命令。
提供了简单的事务功能,在一定程度上保证了事务的完整性。
提供了流水线(Pipeline)功能,客户端可以一次性将一批命令发送到Redis,减少了网络开销。
Redis源代码很少,包文件2M,使用单线程模型,不依赖系统类库,而且实现了事件处理的相关功能。
Redis客户端几乎涵盖了所有主流的编程语言,如 Java、PHP、Python、C、C++、Nodejs。
Redis提供了两种策略将数据持久化到硬盘中,保证了数据的可持久性。
3、Redis可以做什么?
Redis缓存机制几乎在所有的大型系统都有使用,主要是利用了Redis提供的键过期时间的功能,也提供了灵活控制最大内存和内存溢出后的淘汰策略。
Redis提供了列表和有序列表的数据结构,合理的运用可以很方便的构建各种排行榜系统。
在高并发下计算播放数,浏览数等计数操作,在传统关系型数据库实现性能是一种挑战,但Redis天然就支持技术功能,而且计数器的性能也非常好。
新浪微博就是很好的例子。
Redis提供了发布订阅和阻塞队列的功能,虽然没有专业的消息队列强大,但是也可以实现基本的功能。
4、Redis不可以做什么?
Redis是基于内存的数据库,由于内存这种资源相对比较稀有,存储有限,当数量非常大时,对内存的占用会非常大,导致资源消耗严重,拖慢整个系统。
Redis并不是适用于任何场景,要找到Redis真正适用的快速执行低延迟场景,才可以达到事半功倍的效果。
2、Redis服务安装、启动与关闭
1、Linux 下 Redis安装
如下简单7步即可安装redis:
#1、下载最新稳定版,版本号第二位为偶数则为稳定版,为奇数则为不稳定版本 wget http://download.redis.io/releases/redis-4.0.8.tar.gz #2、解压缩Redis源码压缩包 tar xzf redis-4.0.8.tar.gz #3、建立一个Redis目录的软连接,指向redis-4.0.8,防止把redis绑定在指定版本上,这样做有利于Redis未来升级 ln -s redis-4.0.8 redis #4、进入redis目录 cd redis #5、编译 make #6、安装,这样可以将Redis的相关运行文件放到 /usr/local/bin/下,这样可以在任意目录执行Redis命令。 make install #7、查看安装后的Redis版本 redis-cli -v #打印结果如下: redis-cli 4.0.8
2、三种启动Redis的方式
- 默认启动,直接运行 redis-server,会按照默认配置,默认端口进行启动,默认端口为6379。
redis-server
- 运行启动,在默认配置后面配置参数进行启动,常用参数包括 端口信息、日志文件、数据目录、是否启动守护进程等。
redis-server --port 6380 --logfile /home/zz/redis_ruoli.log
- 配置文件启动,可以在后面直接指定配置文件进行启动,这种方式最灵活,一般在生产环境中选用这种方式。
redis-server /home/zz/redis.conf
3、关闭Redis服务
一般情况下可以直接通过 redis-cli shutdown 命令进行关闭,也可以直接通过kill命令 杀死进程,但是切记不要以 kill -9 进行杀死,这样会导致Redis缓冲区资源不能正常关闭,也会导致数据丢失。
我们可以通过
redis-cli shutdown nosave|save
命令来设置关闭服务时是否保存数据。