原文首发于博客园,作者:后青春期的Keats;地址:https://www.cnblogs.com/keatsCoder/ 转载请注明,谢谢!
最近有幸为公司的项目中引入了Redis,可以在实战中学习是一件很幸福的事情。故在粗读《Redis深度历险:核心原理和应用实践》后,购入《Redis开发与运维》继续学习Redis。将学习过程中一些重点内容记录下来分享给各位小伙伴
按照目前的学习情况及对Redis的认识,我打算理出来下面的知识结构。每个二级节点作为一篇独立博客。本篇是第一部分-Redis基础
Redis优点
-
速度快、为什么快?
- 数据在内存中
- 使用C语言编写,C语言和操作系统之间的路更短
- 单线程,避免的线程的调配与抢夺
- 作者编码水平高
-
基于键值对,很好理解
Redis的键只支持String类型,值的类型有:String、hash、list、set、zset。以及由 String演变的 bitmaps HyperLogLog GEO 这些丰富的类型可以让我们开发者开发出很多有意思的应用
-
简单稳定
Redis在3.0之前,代码只有2W行,3.0加了集群也只有5W行。随随便便一个后台管理系统的代码量(dog奈何是C语言,对于Javaer看源码成本稍微有些高)。而且是单线程模型,客户端开发很简单,Java客户端如著名的Jedis API和原生的API命名很类似,学习成本也不大。并且Redis已经在各大公司使用。足以说明其稳定性。
-
持久化
作为内存数据库,有个痛点就是持久化的问题。总不能断电了数据就丢掉。Redis提供了RDB和AOF两种持久化方式,保证了数据的持久性
-
主从、哨兵、集群
3.0版本后原生支持多机,很方便
Redis不足
- Redis数据是存储内存中的,而内存的价格决定了它无法存储特别大规模的数据。
- 数据是由冷、热之分的。例如:商品信息和用户查看记录。商品信息属于热数据,每一个用户都可能查看;用户查看记录属于冷数据,只有他自己偶尔看一下。如果将冷数据存储到Redis中。可以说是对Redis极大的浪费。
Redis安装
Linux下安装Redis
redis版本号中间的数字为奇数代表下一个偶数版本的开发版本。建议使用中间为偶数的稳定版。我这里使用 3.0.7 版本
下载:
wget http://download.redis.io/releases/redis-3.0.7.tar.gz
如果提示找不到命令,使用 yum 安装 wget 命令: yum -y install wget
解压:
tar xzf redis-3.0.7.tar.gz
建立Redis目录软连接。这样做是为了屏蔽Redis和版本号的关联,便于升级版本
ln -s redis-3.0.7 redis
安装:
# 检查有没有安装 gcc,
gcc -v
# 如果是 commond not found 则没有安装,需要输入以下命令安装
yum install gcc
# 开始安装
cd redis
make # 编译
make install # 安装
启动Redis
redis-server
如果需要配置命令启动,可以通过以下的方式:
redis-server --configKey1 v1 --cK2 v2
生产环境一般建议将参数写到配置文件中,然后指定配置文件启动
redis-server /opt/redis/redis.config # 配置文件的绝对路径
Redis基础配置
配置名 | 说明 | 提醒 |
---|---|---|
port | 端口,默认6379 | |
logfile | 日志文件 | 配置到xxx文件而不是目录 |
dir | Redis工作目录,存储日志文件和持久化文件 |
Redis客户端
redis-cli -h {host} -p {por
t} # 默认是 127.0.0.1 6379
关闭Redis
shutdown
ctrl -c 前台运行的话,关闭命令行
不建议 kill -9 强制关闭,会来不及持久化,导致数据丢失