一、redis简介

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。
 
二、redis环境搭建
 
1、到官网上下载redis,我下载的版本是3.0.7
官网地址:http://redis.io/
2、将下载下来的tar.gz 压缩包拷贝到usr/local目录下
该目录需要root权限 sudo cp redis-3.0.7.tar.gz /usr/local
3、使用终端进入local文件夹中,解压该压缩文件
sudo tar -zxf redis-3.0.7.tar.gz
4、编译测试:sudo make test
5、redis安装: sudo make install
至此,安装已完成、不过还需将redis配置一下
 
==================================
配置
1、在usr/local目录中创建三个文件夹,包括bin,etc,db三个目录
sudo mkdir /usr/local/bin
sudo mkdir /usr/local/etc
sudo mkdir /usr/local/db
2、将redis-3.0.7目录中的mkreleasehdr.sh,redis-benchmark, redis-check-dump, redis-cli, redis-server拷贝到bin目录
sudo cp /usr/local/redis-3.0.7/src/mkreleasehdr.sh ./bin
............
............
3、进入redis/etc目录下创建redis.conf配置文件
sudo vim redis.conf 
4、在redis.conf中添加如下代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#修改为守护模式
 
daemonize yes
 
#设置进程锁文件
 
pidfile /usr/local/redis/redis.pid
 
#端口
 
port 6379
 
#客户端超时时间
 
timeout 300
 
#日志级别
 
loglevel debug
 
#日志文件位置
 
logfile /usr/local/redis/log-redis.log
 
#设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id
 
databases 8
 
##指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
 
#save <seconds> <changes>
 
#Redis默认配置文件中提供了三个条件:
 
save 900 1
 
save 300 10
 
save 60 10000
 
#指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,
 
#可以关闭该#选项,但会导致数据库文件变的巨大
 
rdbcompression yes
 
#指定本地数据库文件名
 
dbfilename dump.rdb
 
#指定本地数据库路径
 
dir /usr/local/redis/db/
 
#指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能
 
#会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有
 
#的数据会在一段时间内只存在于内存中
 
appendonly no
 
#指定更新日志条件,共有3个可选值:
 
#no:表示等操作系统进行数据缓存同步到磁盘(快)
 
#always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
 
#everysec:表示每秒同步一次(折衷,默认值)
 
appendfsync everysec

将文件保存退出

进入etc目录下 启动redis

sudo ../bin/redis-server ./redis.conf

启动完成后,实时查看启动日志

tail -f /usr/local/redis/log-redis.log

至此,redis 搭建完成,默认端口是6379

若想停止redis  进入bin目录

命令:redis-cli shutdown

停止redis

三、停止redis

./redis-cli -p 7030 shutdown

为了以后运维更轻松,可以利用alias做几个别名,

vi ~/.bashrc

alias redis="cd /opt/app/redis/redis-2.8.17/src"
alias startRedis="/opt/app/redis/redis-2.8.17/src/redis-server /opt/app/redis/redis-2.8.17/conf/redis7030.conf"
alias stopRedis="/opt/app/redis/redis-2.8.17/src/redis-cli -p 7030 shutdown"

具体路径,大家根据实际情况调整,保存退出,重新连接到linux终端

redis 即可直接进入redis根目录

startRedis 即启动redis

stopRedis 即停止redis

四、配置redis仅做为缓存使用

如果不打算使用事务、管线等一堆复杂功能,仅仅把redis当成cache server使用,可以在配置文件中,找到maxmemory、maxmemory-policy这二项,参考下面修改

maxmemory 2048mb
maxmemory-policy allkeys-lru

即:最大允许使用2G内存,所有key全都按LRU(近期最少使用)算法淘汰,这种情况下,不用设置过期时间,只要内存使用达到上限,不怎么使用的key自然被干掉。

附:redis.conf的微优化配置(从百度百科上抄过来的)

 1 daemonize yes
2
3 pidfile /opt/app/redis/redis-2.8.17/var/redis.pid
4
5 port 7030
6
7 timeout 300
8
9 loglevel debug
10
11 logfile /opt/app/redis/redis-2.8.17/var/redis.log
12
13 databases 16
14
15 save 9001
16
17 save 30010
18
19 save 6010000
20
21 rdbcompression yes
22
23 dbfilename dump.rdb
24
25 dir /opt/app/redis/redis-2.8.17/var/
26
27 appendonly no
28
29 appendfsync always
30
31 # slaveof <masterip> <masterport>
32 # masterauth <master-password>
33
34 slave-serve-stale-data yes
35
36 slave-read-only yes
37
38 maxmemory 1gb
39
40 maxmemory-policy allkeys-lru

其中:

端口、38行-最大内存使用量、以及var目录路径,大家根据实际情况自行调整

mac下搭建redis环境的更多相关文章

  1. 初识redis——mac下搭建redis环境

    一.redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有 ...

  2. mac下搭建lua环境

    mac下安装lua(可借助:rudix 地址:http://rudix.org) curl -s https://raw.githubusercontent.com/rudix-mac/rpm/201 ...

  3. 一步步学习Python-django开发-Mac下搭建Python-Django环境

    首先确定学习那一个版本,以之前对Python的接触,Python2.x 的版本仍然占据很大的市场.但作为初学者我还是决定学习新的版本,相信未来会逐渐转向3.x版本的. 其实搭建Python不是一件很难 ...

  4. Mac下搭建selenium环境

    1,安装selenium 打开terminal,使用以下命令安装selenium:   pip install -U selenium 2,下载chromedriver,并放在python的安装根目录 ...

  5. Mac下搭建atx2环境

    Git-atx2官网地址,默认已有python3环境 1.安装rethinkdb 安装db:mac上安装很简单,执行brew install rethinkdb 启动db:nohup rethinkd ...

  6. mac下搭建MySql环境基本步骤

    准备工作做完后,开始: 创建数据库 step1: 在mac中->系统偏好设置->最下边点MySQL 在弹出页面中 关闭mysql服务(点击stop mysql server) step2: ...

  7. mac下搭建MySql环境

    准备工作做完后,开始: 创建数据库 step1: 在mac中->系统偏好设置->最下边点MySQL 在弹出页面中 关闭mysql服务(点击stop mysql server) step2: ...

  8. mac下搭建react-native环境

    1.安装Homebrew 2.安装node(最好安装4.x以上版本这样就自带了一个npm) 3.安装npm(node的包管理工具) 一般高版本的npm在安装node的时候已经具有了 4.安装react ...

  9. mac下搭建cordova开发环境

    Apache Cordova 原名叫PhoneGap.是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台.PhoneGap最初由Nitobi开发,2011年 ...

随机推荐

  1. 单机静默安装GI软件并创建ASM实例和ASM磁盘组

    环境:RHEL 6.4 + Oracle 11.2.0.4 需求:单机静默安装GI软件并创建ASM实例和ASM磁盘组,为后续迁移数据库文件到ASM做准备 1. 安装配置GI软件 2. 创建ASM实例 ...

  2. 详解javascript的类

    前言 生活有度,人生添寿. 原文地址:详解javascript的类 博主博客地址:Damonare的个人博客 Javascript从当初的一个"弹窗语言",一步步发展成为现在前后端 ...

  3. android 模拟2048

    利用节日休息时间在ANDROID上进行学习并模拟2048游戏. 效果如下图: 制作思路: 1.画出2048游戏主界面,根据手机屏幕宽高度进行计算并画出每个方块的大小. @Override protec ...

  4. Qt 拷贝文件目录

    bool copyDir(const QString &source, const QString &destination, bool override) { QDir direct ...

  5. [Asp.net 5] Options-配置文件(2)

    很久之前写过一篇介绍Options的文章,2016年再打开发现很多变化.增加了新类,增加OptionMonitor相关的类.今天就对于这个现在所谓的新版本进行介绍. 老版本的传送门([Asp.net ...

  6. C# 本质论 第一章 C#概述

    学习新语言最好的办法就是动手写代码. 库(或称为类库)的文件扩展名是.dll,其中dll代表"动态链接库(Dynamic Link Library)". 不要在标识符中使用单词缩写 ...

  7. Android 5.0源码编译问题

    如果是自己通过repo和git直接从google官网上download的源码,请忽略这个问题,但是由于google在国内被限制登录,通过这一种方法不是每个人都能download下来源码,通常的做法就是 ...

  8. 用大白话聊聊JavaSE -- 如何理解Java Bean(一)

    首先,在开始本章之前,先说一个总的概念:所谓的Java Bean,就是一个java类,编译后成为了一个后缀名是 .class的文件.这就是Java Bean,很多初学者,包括当年的我自己,总是被这些专 ...

  9. Java面试题整理一(侧重多线程并发)

    1..是否可以在static环境中访问非static变量? 答:static变量在Java中是属于类的,它在所有的实例中的值是一样的.当类被Java虚拟机载入的时候,会对static变量进行初始化.如 ...

  10. hibernate的get和load的区别

    在hibernate中我们知道如果要从数据库中得到一个对象,通常有两种方式,一种是通过session.get()方法,另一种就是通过session.load()方法,然后其实这两种方法在获得一个实体对 ...