一、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. I2C基础知识

    常识 两条总线线路:串行数据总线SDA,串行时钟总线SCL 每个连接到总线的器件都有唯一的地址供其他设备寻址 每个连接到总线的器件都可以作为发送器和接收器 是多主机总线,如果两个或更多主机同时初始化, ...

  2. Linux I/O多路复用

    Linux中一切皆文件,不论是我们存储在磁盘上的字符文件,可执行文件还是我们的接入电脑的I/O设备等都被VFS抽象成了文件,比如标准输入设备默认是键盘,我们在操作标准输入设备的时候,其实操作的是默认打 ...

  3. Keystone 命令汇总

    Keystone 命令汇总   目录 [隐藏] 1 用户(User) 1.1 查看用户列表 1.2 创建用户 1.3 删除用户 1.4 显示用户详细信息 1.5 更新用户的密码 1.6 赋予用户一个角 ...

  4. JQuery判断元素是否存在

    JQuery判断元素是否存在的原理与javascript略有不同,因为$选择器选择的元素无论是否存在都不会返回null或undefined,要使用JQuery判断元素是否存在,只能使用length属性 ...

  5. 直播时代--IOS直播客户端SDK,美颜直播【开源】

    当前视频直播非常火爆,手机端的视频直播也非常火爆,PGC.UGC的视频直播门槛都降低了很多. 本文介绍一个:IOS 客户端直播的SDK,代码完全开源. 直播时代:让IOS普通开发者一天内做出一个RTM ...

  6. PhotoShop算法原理解析系列 - 像素化---》碎片。

    接着上一篇文章的热度,继续讲讲一些稍微简单的算法吧. 本文来讲讲碎片算法,先贴几个效果图吧:             这是个破坏性的滤镜,拿美女来说事是因为搞图像的人90%是男人,色色的男人. 关于碎 ...

  7. 【原】移动web动画设计的一点心得——css3实现跑步

    今年3月份,由于公司业务需要,我转岗到微信产品部,离开了TID团队,人都是有感情的动物,更何况在一个团队呆了快 3 年,心中十分舍不得,鬼哥说了“天下没有不散的宴席...”,在我的世界里又多了一次离别 ...

  8. POJ1947 Rebuilding Roads[树形背包]

    Rebuilding Roads Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 11495   Accepted: 5276 ...

  9. 第6章 Java类中的方法

    1.如何定义java的方法 什么是方法:方法使用来解决一类问题的代码集合,是一个功能模块在类中定义个方法的方法是: 访问修饰符 返回值类型 方法名(参数列表){ 方法体 } 1.访问修饰符,是限制该方 ...

  10. 转: 在 Vim 中优雅地查找和替换 (写的很好,排版也是相当的赞)

    http://harttle.com/2016/08/08/vim-search-in-file.html