一、Redis服务器安装(基于阿里云服务器)
因为redis是c语言开发的,在安装Redis的过程中会需要编译,所以服务器需要一个编译工具
1、安装gcc
在centos下面安装gcc,我们使用yum(包管理器)安装,因为gcc依赖了很多东西,而有些包系统可能已经安
装了,有些没有,所以下面的命令最后都执行一遍,在shell中执行下面的命令:
yum install cpp
yum install binutils
yum install glibc-kernheaders
yum install glibc-common
yum install glibc-devel
yum install gcc
yum install make
2、安装Redis
在这一步中,我们参考官网安装的Redis步骤
$ wget http://download.redis.io/releases/redis-4.0.2.tar.gz
$ tar xzf redis-4.0.2.tar.gz
$ cd redis-4.0.2
$ make
启动服务:
之前已经进入redis-4.0.2目录
//后台启动redis服务
src/redis-server &
//查询redis进程
ps -ef | grep redis
//结束进程
kill -9 pid
初步测试:
之前cd进redis-4.0.2
[root@im5e**am**76**3jbgaz redis-4.0.2]# src/redis-cli
127.0.0.1:6379> set name hello word
OK
127.0.0.1:6379> get name
"hello word"
------------------------华丽的分割线------------------------
这个方法安装的时候把所有的启动项安装到了src下,这里面有很多其它文件,虽然很方便,但是不太友好
plan B
$ wget http://download.redis.io/releases/redis-4.0.2.tar.gz(官网下载tar.gz安装包)
$ tar -zvxf redis-4.0.2.tar.gz
$ mkdir redis(在root路径下创建redis文件夹)
$ cd redis-4.0.2
$ make install PREFIX=/root/redis(把启动项安装到指定到路径下)
$ cp redis.conf /root/redis/bin(在redis-4.0.2目录下找到这个文件)
$ cd redis/bin
$vim reids.conf
/daem (找到daemonize no 改成 yes)
$./redis-server redis.conf
$./redis-cli
初步测试完成。。。。。。。
3、修改配置文件
在安装完之后可能会稍微对配置上有点个性化需求,这里我只想改一下最大占用内存
redis.conf 在/root/redis-4.0.2 目录下
# limit for maxmemory so that there is some free RAM on the system for slave
# output buffers (but this is not needed if the policy is 'noeviction').
#
# maxmemory <bytes> 在这里的下面加上最大内存,我设定的是500M
maxmemory 524288000
# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory
4、可能出现的问题
性能测试:
./redis-benchmark(/root/redis/bin路径下)
一个字:快!
二:redis简介
1.什么是redis
“Redis is an open source (BSD licensed),in-memory data structure store, used as a database,cache and message broker.”(官方原话)
Redis是一个开源的,基于内存的数据结构存储,可用作于数据库、缓存、消息中间件。
2.为什么要用缓存
三: 基本命令介绍
1.存储数据到redis
set key value
取数据
get key
设置key过期时间
expire key timeout 例:expire test 10
Incr key 原子自增1
例:set id 10
Incr id =>id 变成11
decr key 原子自减 [并发减库存]
更多命令可上以下网站查看
http://www.redis.cn/http://doc.redisfans.com/
总结:
string–>简单的key-value
list–>有序列表(底层是双向链表)–>可做简单队列
set–>无序列表(去重)–>提供一系列的交集、并集、差集的命令
hash–>哈希表–>存储结构化数据
sortset–>有序集合映射(member-score)–>排行榜
2.持久化 RDB 和AOF
redis数据都在内存中,为了防止断电数据丢失,所以需要持久化!
RDB(快照)
保存数据到磁盘规则:
save 秒 变化的 key个数
save 900 1 15分钟至少有一个key被改变向磁盘保存一次
save 300 10 5分钟至少10个key被改变向磁盘保存一次
save 60 10000 1分钟至少10000个key被改变要向磁盘保存一次
效率高,但是可能会丢数据。
AOF (文件追加)
产生过一个文件,记录你的所有操作的命令。redis死了,重新执行这个文件。所有redis的数据就会恢复。
效率低,数据完整度高。
3.redis 内置的缓存淘汰策略 LRU(最近最少使用)算法
http://www.redis.cn/topics/lru-cache.html
四:redis的各种问题
1.Redis单线程为什么快?
1)纯内存操作
2)核心是基于非阻塞的IO多路复用机制
3)单线程避免了多线程的频繁上下文切换问题
2.什么是缓存击穿(穿透)?
先看图,了解一下从缓存中加载数据的流程
如果一直查询缓存中不存在的数据,就会造成缓存穿透
先写这么点吧
参考资料
1.https://yq.aliyun.com/articles/238783