一、Redis介绍

1、Redis是一个key-value存储系统

2、官方站点http://redis.io

3、Redis和Memcached类似,但支持数据持久化

4、支持更多value类型,除了string外,还支持hash、lists(链表)、sets(集合)、和sorted sets(有序集合)几种数据类型

5、Redis使用两种文件格式:全量数据(RDB)和增量请求(aof)。全量数据格式是把内存中的数据写入磁盘,便于下次读取文件进行加载。增量请求文件则是把内存中的数据序列化为操作请求,用于读取文件进行replay得到数据

6、Redis的存储分为内存存储、磁盘存储和log文件三部分

二、Redis下载安装配置

# wget 'https://codeload.github.com/antirez/redis/tar.gz/2.8.21' -O redis-2.8.21.tar.gz

# tar zxvf redis-2.8.21.tar.gz

# cd redis-2.8.21

# make

# make PREFIX=/usr/local/redis install

# mkdir  /usr/local/redis/etc

# wget http://www.apelearn.com/study_v2/.redis_conf -O /usr/local/redis/etc/redis.conf 2> /dev/null

# wget http://www.apelearn.com/study_v2/.redis_init -O /etc/init.d/redis 2> /dev/null

# useradd -s /sbin/nologin redis && mkdir /usr/local/redis/var && chmod 777 /usr/local/redis/var && chmod 755 /etc/init.d/redis

# chkconfig --add redis

# chkconfig redis on

# service redis start

三、Redis数据结构

1、Redis数据类型-string

l       string是最简单的类型,你可以理解成与Memcached一样的类型,一个key对应一个value,其上支持的操作与Memcached的操作类似,他的功能更丰富。设置可以存二进制的对象。

l       示例

# redis-cli set mykey "fanjinbao"

# redis-cli get mykey "fanjinbao"

"fanjinbao"

也可以进入redis的终端进行创建

# redis-cli

127.0.0.1:6379> mset key1 zhangsan key2 lisi key3 hello

127.0.0.1:6379> mget key1 key2 key3

1) "zhangsan"

2) "lisi"

3) "hello"

2、Redis数据类型-list

l       list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等。操作中key理解为链表的名字,使用List结构,我们可以轻松地实现最新消息排行等功能(比如新浪微博的TimeLine)。list的另一个应用就是消息队列,可以利用list的push操作,将任务存在list中,然后工作线程再用pop操作将任务取出进行执行。

l       示例

左侧插入

# redis-cli lpush list aaa

左侧取值

# redis-cli lpop list

右侧插入

# redis-cli rpush list lisi

右侧取值

# redis-cli rpop list

查看所有list值

# redis-cli lrange list 0 -1

3、Redis数据类型-set

l       set是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作。操作中key理解为集合的名字。比如在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。因为Redis非常人性化的为集合提供了求交集、并集、差集等操作,那么就可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面所有集合的操作,你还可以使用不同的命令选择将结果返回给客户端还是存到一个新的集合中。QQ有一个社交功能叫“好友标签”,可以个你的好友贴标签,比如“大美女”、“土豪”,“欧巴”等等,这时可以使用redis的集合来实现,把每一个用户的标签都存储在一个集合之中。

l       示例

往集合中添加元素

# redis-cli sadd set1 abc

列出集合中的元素(无序显示)

# redis-cli smembers set1

4、Redis数据类型-sort set

l       sort set是有序集合,它比set多了一个权重参数score,使得集合中的元素能够按score进行有序排列,比如一个存储全班同学成绩的sort set,其集合value可以是同学的学号,而score就可以是其考试得分,这样的数据插入集合的时候,就已经进行了天然的排序

l       示例

往集合中添加元素

# redis-cli zadd set2 12 abc

# redis-cli zadd set2 2 "cde 123"

# redis-cli zadd set2 24 123-aaa

# redis-cli zadd set2 4 a123a

列出集合中的元素(按权重参数排列升序)

# redis-cli zrange set2 0 -1

1) "cde 123"

2) "a123a"

3) "abc"

4) "123-aaa"

列出集合中的元素(按权重参数降序)

# redis-cli zrevrange set2 0 -1

5、Redis数据类型-hash

l       在Memcached中,我们经常将一些结构化的信息打包成hashmap,在客户端序列化后存储为一个字符串的值(一般是JSON格式),比如用户名的昵称、年龄、性别、积分等。

l       示例

往集合中添加元素

# redis-cli hset hash name fanjinbao

# redis-cli hset hash age 31

取集合中的元素

# redis-cli hget hash name

# redis-cli hget hash age

列出所有元素

# redis-cli hgetall hash

四、Redis持久化

1、Redis提供了两种持久化的方式,分别是RDB(Redis DataB)和AOF(Append Only File)

2、RDB,简而言之,就是不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上。

3、AOF,则是换了一个角度来实现持久化,那就是将redis执行过得所有写指令记录下来,在下次redis重新启动时,只要把这些指令从前到后再重复执行一遍,就可以实现数据恢复。

4、其实RDB和AOF两种方式也可以同时使用,在这种情况下,如果redis重启的话,则会优先采用AOF方式来进行数据恢复,这是因为AOF方式的数据恢复完整度更高。

5、如果你没有数据持久化的需求,也完全可以关闭RDB和AOF方式,这样的话,redis就变成一个纯内存数据库,就像Memcached一样

五、Redis配置

查看Redis配置信息

127.0.0.1:6379> config get *

Redis的基本配置参数:

daemonize no #默认情况下,redis并不是以daemon形式来运行的。通过daemonize配置项可以控制redis的运行形式

pidfile /path/to/redis.pid #当以daemon形式运行时,redis会生成一个pid文件,默认会生成在/var/run/redis.pid

bind 192.168.1.201 192.168.1.202 #指定绑定的ip,可以有多个

port 6379 #默认端口

unixsocket /tmp/redis.sock #也可以监听socket

unixsocketperm 755 #当监听soket时可以指定权限为755

timeout 0 #当一个redis-client一直没有请求发现server端,那么server端有权主动关闭这个连接,可以通过timeout来设置“空闲超时时限”,0表示永不关闭

tcp-keepalive 0 #TCP连接保活策略,可以通过tcp-keepalive配置项来进行设置,单位为秒,加入设置60秒想连接空闲的客户端发起一次ACK请求,以检查客户端是否已经挂掉,对于无响应的客户端则会关闭其连接,如果设置为0,则不会进行保活检测。

loglevel notice #日志级别,有四种debug、verbose、nbotice、warning

logfile “” #定义日志路径

syslog-ident redis #如果希望日志打印到syslog中,通过syslog-enable来控制,另外,syslog-ident还可以让你指定syslog里的日志标志。

syslog-facility local0 #指定syslog的设备,可以是USER或者local0-local7

databases 16 #设置数据库的总数量,select n选择数据库,0-15

Redis快照配置(rdb持久化)

save 900 1 #表示表示每15分钟且至少1个key改变,就触发一次持久化

save 60 10000 #表示每60秒至少有10000个key改变,就触发一次持久化

save 300 10 #表示每5分钟且至少10个key改变,就触发

save "" #这样就可以禁用rdb持久化

stop-writes-on-bgsave-error yes #rdb持久化写入磁盘避免不了会出现失败的情况,默认一旦出现失败,redis会马上停止写操作,如果你觉得无所谓,那就可以使用该选项关闭这个功能。

rdbcompression yes #是否要压缩

rdbchecksum yes #是否进行数据校验

dbfilename dump.rdb #定义快照文件的名字

dir ./ #定义快照文件存储路径

Redis安全相关配置

requirepass fansik #设置redis-server的密码

如果设置了密码,登录方式:

# redis-cli -a fansik

rename-command CONFIG fansik.config #将CONFIG命令更名为fansik.conf,这样就可以避免误操作,但如果使用了AOF持久化,建议不要启用该功能

rename-command CONFIG "" #也可以后面定义为空,这样就可以禁掉CONFIG命令

Redis限制相关配置

maxclients 10000 #限制最大客户端连接数

maxmemory <bytes> #设定最大内存使用数,单位是byte

maxmemmory-policy volatile-lru #指定内存移除规则

maxmemory-samples 3 #LRU算法和最小TTL算法都并非是精确的算法,而是估值,所以可以设置样本的大小,加入redis默认会检查三个key并选择其中的LRU的那个,那么你可以改变这个key样本的数量

Redis AOF持久化相关配置

appendonly on #如果是yes,则开启aof持久化

appendfilename "appendonly.aof" #指定aof文件名字,保存在dir参数指定的目录

appendfsync everysec #指定fsync()调用模式,有三种no(不调用fsync),always(每次写都会调用fsync),everysec(每秒钟调用一次fsync),第一种最快,第二种数据最安全,但性能会差一些,默认为第三种

no-appendfsync-on-rewrite no #使用no可避免当写入量非常大时的磁盘io阻塞

auto-aof-rewrite-percentage 10 #规定什么情况下会出发aof重写。改值为一个比例,10表示当aof文件增幅达到10%时则会触发重写机制

auto-aof-rewrite-min-size 64mb #重写会有一个条件,就是不能低于64mb

Redis慢日志相关配置

针对慢日志,你可以设置两个参数,一个是执行时长,单位是微秒,另一个是慢日志的长度。当一个新的命令被写入日志时,最老的一条会从命令队列中被移除

slowlog-log-slower-than 10000 #慢于10000ms则记录日志

slowlog-max-len 128 #日志长度(条数)

Redis安装及基本配置的更多相关文章

  1. redis安装以及安全配置

    redis安装以及安全配置 1. 安装 sudo apt-get install redis-server 使用which查询redis执行体安装路径: which redis-server #/us ...

  2. Redis安装、主从配置及两种高可用集群搭建

    Redis安装.主从配置及两种高可用集群搭建 一.            准备 Kali Linux虚拟机 三台:192.168.154.129.192.168.154.130.192.168.154 ...

  3. Redis安装及主从配置(转)

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

  4. redis安装与基本配置

    获取下载包 wget http://download.redis.io/releases/redis-2.8.24.tar.gz 解压和编译 tar -zxvf redis-2.8.24.tar.gz ...

  5. Redis安装及主从配置

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

  6. Redis 安装 启动 连接 配置 重启

    Linux下安装 ]# wget http://download.redis.io/releases/redis-2.8.17.tar.gz ]# .tar.gz ]# cd redis- ]# ma ...

  7. Redis安装及常用配置

    Redis安装说明 大多数企业都是基于Linux服务器来部署项目,而且Redis官方也没有提供Windows版本的安装包.因此课程中我们会基于Linux系统来安装Redis. 此处选择的Linux版本 ...

  8. Nginx+Keepalived+Tomcat高可用负载均衡,Zookeeper集群配置,Mysql(MariaDB)搭建,Redis安装,FTP配置

    JDK 安装步骤 下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html rpm ...

  9. Redis安装、主从配置及aof使用

    找了02,03,04三台机器,04做主,02做从,03做客户端. 都使用jumbo install redis安装了Redis(server+client). 在 02 从的 ~/.jumbo/etc ...

随机推荐

  1. 测试V模型

    一:测试V模型 RAD(Rap Application Development 快速引用开发)模型是软件开发过程中的一个重要模型,由于模型构图形似字母V,所以又称软件开发的V模型.他通过开发和测试同时 ...

  2. C++指针详解(二)

    指针是C/C++编程中的重要概念之一,也是最容易产生困惑并导致程序出错的问题之一.利用指针编程可以表示各种数据结构,通过指针可使用主调函数和被调函数之间共享变量或数据结构,便于实现双向数据通讯:指针能 ...

  3. SharePoint安全 - 攻破SharePoint(黑客工具介绍)

    博客地址 http://blog.csdn.net/foxdave SharePoint的安全性很高,这是我们潜意识里的第一印象,所以具体的安全性体现在哪并没仔细研究过.但是事实上确实没有绝对安全的东 ...

  4. Centos 6 安装 epel yum库

    1.获得epel库安装rpm包 wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm 2.安装获得的r ...

  5. 另类加载dll---快捷方式启动参数

    http://blogs.360.cn/360safe/2014/08/29/cnc_trojan_and_fake_proto/ 原文: BMP1和BMP2是两个lnk文件(快捷方式),我们知道bm ...

  6. 用Ogre实现《天龙八部》场景中水面(TerrainLiquid)详解

    本文主要讲的是<天龙八部>游戏中水面(TerrainLiquid)的具体实现,使用C++,Ogre1.6. 天龙的水面做的比较简单,虽然没有倒影,但动态纹理+深度图做出的效果还行,看着不是 ...

  7. hdu 2044

    ps:好吧,WA了两次,第一次注意到要用long long了...但是printf那里给忘了...又WA.. 代码:#include "stdio.h"long long dp[5 ...

  8. C118 免按开机自动加载固件

    最近无事,研究了按按钮开机的功能:功能的起初是参考了别人的系统是怎么做免开机加载固件的. 一.原理: 1.c118 原生loader部分代码是没有源代码的,它上电只需要按开机键然后系统就会起来. 2. ...

  9. iOS 开发之重力动画效果

    步骤:1.使用single view application创建新的项目 2.在viewcontroller.h文件中创建一个图片实例并与相关图片相连,然后创建一个UIDynamicAnimator ...

  10. NGUI悬浮菜单思路实践

    使用NGUI制作悬浮菜单.在UIAnchor锚点下的Offset建立背景和按钮菜单.同过InputMouseXY的位置判断.是否应该弹出和收回.OffSet在此处是作为TweenGameObject的 ...