一、redis简介

  1、Redis:键值对类型的内存数据库;应用于高并发和实时请求的场景;
  2、Redis常用数据类型:

    (1) string(基本数据类型)    
    (2)hash 注:hash中的数据(key-value)只能为字符串类型
    (3)list
    (4)set 不重复,无序
    (5)sorted set ,不重复,有序
  3、特点:
    (1)高性能 (读速度11W次/s,写速度约8W次/s)
    (2)原子性 (可保证数据的准确性)
    (3)持久存储(两种方式:RDB快照,AOF日志)
    (4)主从结构(master-slave,负载均衡,高可用)
    (5)支持集群(3.0版本)

二、部署

1、单机部署

(1)安装依赖

yum -y install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make

(2)下载redis的安装包,然后解压到指定目录,编译、配置

# tar -zxvf redis-3.0..tar.gz  -C  /usr/local
# mv redis-3.0. redis
# cd redis
# make
# make install

(3)修改配置文件

# cp redis.conf /etc
# vi /etc/redis.conf #修改如下两个参数即可 daemonize yes #设置为后台进程
logfile "/usr/local/redis/log" #设置日志目录

(4)服务启动与关闭

启动redis服务:redis-server /etc/redis.conf
连接到redis中:redis-cli -h 127.0.0.1 -p 6379
停止redis服务:redis-cli shutdown

2、集群部署

(1)集群规划

  要让集群正常工作至少需要3个主节点,每个主节点对应需要一个从节点,因此在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下(限于个人电脑配置,仅用一台机器进行模拟,生产环境可以参考):

192.168.1.160:
192.168.1.160:
192.168.1.160:
192.168.1.160:
192.168.1.160:
192.168.1.160:

(2)下载、解压、编译,参考单机模式

下载地址: http://download.redis.io/releases/redis-3.0.0.tar.gz
# tar -zxvf redis-3.0..tar.gz -C /usr/local #与单机模式相同,注意安装依赖
# mv redis-3.0..tar.gz redis3.
# cd /usr/local/redis3.
# make
# make install

(3)创建集群所需的目录

mkdir -p /usr/local/cluster
cd /usr/local/cluster
mkdir
mkdir
mkdir
mkdir
mkdir
mkdir

(4)修改配置文件

# cp /usr/local/redis3./redis.conf  /usr/local/cluster
# vim redis.conf
##修改配置文件中的下面选项
port
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout
appendonly yes
##修改完redis.conf配置文件中的这些配置项之后把这个配置文件分别拷贝到7000/////7005目录下面
cp /usr/local/cluster/redis.conf /usr/local/cluster/
cp /usr/local/cluster/redis.conf /usr/local/cluster/
cp /usr/local/cluster/redis.conf /usr/local/cluster/
cp /usr/local/cluster/redis.conf /usr/local/cluster/
cp /usr/local/cluster/redis.conf /usr/local/cluster/
cp /usr/local/cluster/redis.conf /usr/local/cluster/ #注意:拷贝完成之后要修改7001////7005目录下面redis.conf文件中的port参数,分别改为对应的文件夹的名称

(5)启动、验证

#依次启动各个Redis实例的命令如下:
cd /usr/local/cluster/
redis-server redis.conf
cd /usr/local/cluster/
redis-server redis.conf
cd /usr/local/cluster/
redis-server redis.conf
cd /usr/local/cluster/
redis-server redis.conf
cd /usr/local/cluster/
redis-server redis.conf
cd /usr/local/cluster/
redis-server redis.conf
#验证:
ps -ef|grep redis #若有cluster模式的提示,说明成功

(6)创建集群

#安装依赖,否则会报错
yum -y install ruby rubygems
gem install redis
#创建集群
cd /usr/local/redis3./src
./redis-trib.rb create --replicas 192.168.1.160: 192.168.1.160: 192.168.1.160: 192.168.1.160: 192.168.1.160: 192.168.1.160:
#根据提示输入yes,集群创建完毕会有提示

(7)启动集群

# redis-cli -c -p
#说明:-c指明使用集群的客户端,-p指明端口

3、集群的维护

(1)动态添加节点:
主节点:创建一个空主节点后,需将某些哈希槽移动到这个空节点里面
从节点:创建一个空节点后,把这个新节点设置成集群中某个主节点的复制品。
(2)动态删除节点:
主节点:先转移哈希槽,然后删除;
从节点:直接删除

三、Redis理论知识

1、数据库的特点

(1)多数据库 :默认从0开始16个,不支持自定义;(可修改数据库数目与select切换数据库,用的不多)
多个数据库之间并不是完全隔离的
(2)flushall 与 flushdb
flushall:清空所有数据库中数据;
flushdb:清空当前数据库中的所有数据
(3)注意:redis数据库中没有表,如果想要获取某一类型的数据的话,需要提前对这一批数据的key进行有意义的定义

2、基本命令:

keys 表达式(?,* ,[],\?) 获得符合规则的键名称
exists key 判断一个键是否存在
del key 删除键
del key1 key2 一次删除多个键
获得键值的数据类型type
返回值可能是这五种类型(string,hash,list,set,zset)
注意:redis的命令不区分大小写,键区分大小写

3、常见数据类型的操作命令

(1)String

(2)hash

(3)list

(4)set

(5)sorted set

4、实用tips

(1)set命令:如果 key 已经持有其他类型值, SET 就覆盖旧值,无视类型。
(2)条件查询:redis本身不支持条件查询,但是可以利用reids的一些特性实现类似的条件查询

(3)list使用最频繁,lpush,lpop String次之;

四、Redis进阶

1、expire

2、事务
3、sort

4、发布/订阅模式

5、pipeline

6、持久化

7、安全策略:

8、sentinel

9、主从

10、应用场景

11、优化策略

五、补充

1、一致性哈希

参考:http://www.360doc.com/content/12/0412/17/597197_203070560.shtml

   http://blog.csdn.net/ymr0717/article/details/51909225

先列出题纲,后期待续。。。

redis教程(整理中)的更多相关文章

  1. [个人翻译]Redis 集群教程(中)

    上一篇:http://www.cnblogs.com/li-peng/p/6143709.html 官方原文地址:https://redis.io/topics/cluster-tutorial  水 ...

  2. w3school教程整理

    原文链接:http://www.flygon.net/w3school 原文链接:https://github.com/wizardforcel/w3school w3school教程整理 离线版大部 ...

  3. 原创的离线版 Redis 教程,给力!

    嗯,你没看错,松哥又给大家送干货来了.这次是可以离线阅读的 PDF 版教程哦. 之前一直有小伙伴问我有没有 Redis 的电子书,老实说,有是有,但是公开给大家分享,其实有一点点风险,毕竟这都是有版权 ...

  4. Redis 知识 整理

    简介 安装 启动 注意事项 使用命令 通用命令 数据结构 字符串(string) 哈希(hash) 队列(list) 集合(set) 有序集合(zset) 位图(bitcount) 事务 订阅与发布 ...

  5. Redis教程——检视阅读

    Redis教程--检视阅读 参考 Redis教程--菜鸟--蓝本--3.2.100 Redis教程--w3c--3.2.100 Redis教程--w3c--Redis开发运维实践指南 Redis教程- ...

  6. Redis知识整理

    Redis知识整理 转自:https://www.cnblogs.com/rjzheng/p/9096228.html 1.单线程模型 Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返 ...

  7. Redis初步整理

    1,Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的 ...

  8. Redis 教程 Java工程师学习知识点

    1. Redis简介及安装 1.1 Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下 ...

  9. FreeMarker 教程整理

    Freemarker新手教程 http://blog.csdn.net/qq_23994787/article/details/77506980   FreeMarker教程整理 http://blo ...

  10. redis教程(一)-----redis数据类型、基本命令、发布订阅以及持久化

    简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMwa ...

随机推荐

  1. 设计模式C#实现(十三)——享元模式(蝇量模式)

    意图 0 适用性 1 结构 2 实现 3 效果 4 参考 5 意图 运用共享技术有效地支持大量细粒度的对象. 适用性 当以下情况都成立时使用: 一个程序使用了大量的对象 完全由于使用大量对象造成很大存 ...

  2. Redis 使用说明 安装配置 主从复制

        开机加自启动: echo "redis-server /etc/redis.conf" >>/etc/rc.local    以前有想过用 Memcache 实 ...

  3. Android 实现网络多线程APK文件下载

    (转自:http://blog.csdn.net/mad1989/article/details/38421465) 实现原理 (1)首先获得下载文件的长度,然后设置本地文件的长度. (2)根据文件长 ...

  4. git cherry-pick合并某个commit

    1.使用方法及其作用 git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作(操作的对象是commit).例如,假设我们有个稳定版本的分支,叫v2.0,另外还有个开 ...

  5. Struts与Struts2的区别

    Struts与Struts2的区别 首先看一张Struts2的发展路线图:       从Struts2的发展过程来看,Struts2继承了Struts与Webwork的特性,形成了新的框架.但是它的 ...

  6. Qt 之 入门例程 (一)

    以 “Hello Qt” 为例,介绍如何建立一个 Qt 工程 . 1  QLabel 例程 QLabel 继承自 QFrame (继承自 QWidget),主要用来显示文本和图片. 1.1  Hell ...

  7. 二分法&三分法

    ural History Exam    二分 #include <iostream> #include <cstdlib> using namespace std; //二分 ...

  8. Oracle日期格式转换,tochar(),todate()

    Oracle日期格式转换 本文主要介绍Oracle中的日期转换. 1. 日期转化为字符串 (以2016年10月20日为例) select to_char(sysdate,'yyyy-mm-dd hh2 ...

  9. angular学习笔记(二十九)-$q服务

    angular中的$q是用来处理异步的(主要当然是http交互啦~). $q采用的是promise式的异步编程.什么是promise异步编程呢? 异步编程最重要的核心就是回调,因为有回调函数,所以才构 ...

  10. PAT 1035. 插入与归并(25)

    根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列.每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置.如此迭代直到全部元素有序. 归并排序进行如下迭 ...