Redis 5.0
1.概述默认端口号:6379
redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached支持更多的数据结构(string,list列表[队列和栈],set[集合],sorted set[有序集合],hash(hash表))。相关参考文档:http://redisdoc.com/index.html
2.redis使用场景:数据变化较快而且数据比较不重要的
1.登录会话存储:存储在redis中,与memcached相比,数据不会丢失。
2.排行版/计数器:比如一些秀场类的项目,经常会有一些前多少名的主播排名。还有一些文章阅读量的技术,或者新浪微博的点赞数等。
3.作为消息队列:比如celery就是使用redis作为中间人。
4.当前在线人数:还是之前的秀场例子,会显示当前系统有多少在线人数。
5.一些常用的数据缓存:比如我们的BBS论坛,板块不会经常变化的,但是每次访问首页都要从mysql中获取,可以在redis中缓存起来,不用每次请求数据库。
6.把前200篇文章缓存或者评论缓存:一般用户浏览网站,只会浏览前面一部分文章或者评论,那么可以把前面200篇文章和对应的评论缓存起来。用户访问超过的,就访问数据库,并且以后文章超过200篇,则把之前的文章删除。
7.好友关系:微博的好友关系使用redis实现。
8.发布和订阅功能:可以用来做聊天软件。
3.redis和memcached的比较

4.redis日常操作
1.安装:centos7
wget http://download.redis.io/releases/redis-5.0.0.tar.gz

解压:tar -zxvf redis-5.0.0.tar.gz -C /usr/local/ #解压到/usr/local 在任何目录下都可以打开redis,/usr/local/ #第三方软件一般安装在该目录下

yum install gcc
yum install gcc-c++
cd redis-5.0.0

make #编译安装
cp src/redis-server /usr/bin/
cp src/redis-cli /usr/bin/
[root@localhost redis-5.0.0]# vim redis.conf


bind后边接的ip是登陆redis的地址


2.启动redis数据库服务
yum安装redis启动:service redis start
编译安装redis启动: redis-server redis.conf #如果没有在/usr/local中安装,就必须在解压redis目录中启动
3.停止redis数据库服务
[root@localhost /]# ps -ef | grep redis

[root@localhost /]# kill -9 5715
4.连接上redis-server:
[root@localhost redis-5.0.0]# redis-cli -p 6379 -h 192.168.88.14
192.168.88.14:6379> select 1 #切换数据库 ,默认为数据库0

5.添加和查看数据
set key value
如:
set username a
将字符串值value关联到key。
如果key已经持有其他值,set命令就覆写旧值,无视其类型。并且默认的过期时间是永久,即永远不会过期。

6.删除:
del key

7.查看当前redis所有的key
keys *

8.设置过期时间
expire key timeout(单位为秒)

也可以在设置值的时候,一同指定过期时间:
set key value ex timeout
或:
setex key timeout value

9.查看过期时间
ttl key

10.列表操作
在列表左边添加元素:lpush key value
将值value插入到列表key的表头。如果key不存在,一个空列表会被创建并执行lpush操作。当key存在但不是列表类型时,将返回一个错误。
查看列表中的元素:lrange key start stop
返回列表key中指定区间内的元素,区间以偏移量start和stop指定,如果要左边的第一个到最后的一个lrange key 0 -1。从左往右是从0开始排0,1,2,3…;从右往左是从-1开始排-1,-2,-3…
查看列表中的元素:

在列表右边添加元素:rpush key value
将值value插入到列表key的表尾。如果key不存在,一个空列表会被创建并执行RPUSH操作。当key存在但不是列表类型时,返回一个错误。


删除列表中的数据(只能删除列表的所有数据):del key

移除并返回列表key的头元素: lpop key

移除并返回列表的尾元素:rpop key

指定返回第几个元素:lindex key index
将返回key这个列表中,索引为index的这个元素的数字。

获取列表中的元素个数:llen key

删除指定的元素:lrem key count value
如:
lrem languages 0 php
根据参数 count 的值,移除列表中与参数 value 相等的元素。count的值可以是以下几种:
count > 0:从表头开始向表尾搜索,移除与value相等的元素,数量为count。
count < 0:从表尾开始向表头搜索,移除与 value相等的元素,数量为count的绝对值。
count = 0:移除表中所有与value 相等的值。

11.set集合的操作:(去重)
添加元素:sadd set value1 value2....
查看元素:smembers set

移除元素:srem set member...

查看集合中的元素个数: scard set

获取多个集合的交集:sinter set1 set2
获取多个集合的并集:sunion set1 set2
获取多个集合的差集:sdiff set1 set2

12.hash,哈希(一套数据)操作:
添加一个新值:hset key field value
获取哈希中的field对应的值: hget key field

删除key中的某个field:hdel key field

获取某个哈希中所有的field和value:hgetall key

获取某个哈希中所有的field:hkeys key

获取某个哈希中所有的值:hvals key

判断哈希中是否存在某个field:hexists key field

获取哈希中总共的键值对(几组数据):hlen field

12.事务操作:Redis事务可以一次执行多个命令,事务具有以下特征:
隔离操作:事务中的所有命令都会序列化、按顺序地执行,不会被其他命令打扰。
原子操作:事务中的命令要么全部被执行,要么全部都不执行。
开启一个事务: multi
以后执行的所有命令,都在这个事务中执行的
执行事务:exec
会将在multi和exec中的操作一并提交。
取消事务:discard
会将multi后的所有命令取消。
13.发布/订阅操作:
给某个频道发布消息:publish channel message
订阅某个频道的消息:subscribe channel



5.持久化
redis提供了两种数据备份方式,一种是RDB,另外一种是AOF,以下将详细介绍这两种备份策略:
RDB
AOF
开启关闭
开启:默认开启。关闭:把配置文件中所有的save注释就是关闭了
默认关闭。开启:在配置文件中appendonly:yes 即是开启了aof,no为关闭
同步机制
可以指定某个时间内发生多少个命令进行同步,比如一分钟内发生2次命令,就做一次同步
每秒同步或者每次发生命令后同步
存储内容
存储的是redis里具体的值
存储的是执行的更新操作的命令
存储文件的路径
根据dir以及dbfilename来指定路径和具体的文件名
根据dir以及appendfilename来指定路径和具体的文件名
优点
1.存储数据文件前会进行压缩,文件体积比aof小
2.因为存储的是redis具体的值,并且会经过压缩,因此在恢复的时候速度比aof快
3.非常适合于备份
1.aof策略的备份机制是每分钟或者每发生写操作的时候都会同步,因此即使服务器故障,最多只会丢失1秒的数据。
2.aof存储的是redis命令,而且是直接追加到aof文件后面,因此每次备份的时候只要添加新的数据进去就可以了
3.如果aof文件比较大了,那么redis会进行重写,只保留最小的命令集合,即只会保留同种命令的最新状态。
缺点
1.rdb在多少时间内发生了多少写操作的时候就会触发同步机制,因此采用压缩机制,rdb在同步的时候都重新保存整个redis中的数据,因此一般会设置5分钟才保存一次数据,在这种情况下,一般服务器故障,会造成最多5分钟的数据丢失。
2.在数据保存进rdb的时候,redis会fork出一个子进程来同步,在数据量比较大的时候,可能非常耗时。
1.aof文件因为没有压缩,因此比rdb体积大
2.aof是在每秒或者每次写操作都进行备份,因此如果并发量比较大,效率可能会有点慢
3.aof文件因为存储的是命令,因此在灾难恢复的时候redis会重新运行aof中的命令,因此恢复速度比不上rdb。
6.redis搭建主从
redis主从集群中,从只可以查看数据,不能修改数据,主可以增删改数据
1.拷贝一份redis配置文件为slave-6380.conf
[root@localhost redis-5.0.0]# cp redis.conf slave-6380.conf
2.编辑slave-6380.conf文件
[root@localhost redis-5.0.0]# vim slave-6380.conf

bind 192.168.88.14 #主机ip
slaveof 192.168.88.14 6379 #表示这个从主属于192.168.88.14的6379端口

port 6380 #从redis端口
3.启动主从redis
redis-server redis.conf
redis-server slave-6380.conf

7. redis集群
redis集群至少三个主,每个主至少对应一个从。
将redis集群部署在2个机器上
192.168.88.14
192.168.88.5
每一台机器创建3个redis配置文件
1.编写配置文件
192.168.88.14机器上的配置
mkdir conf #在redis所在的目录下创建
touch 7001.conf 7002.conf 7003.conf
vim 7001.conf#编辑文件并且把如下内容拷贝进去
(剩下的7001.conf和7002.conf也是如此,把一下7000改成7001和7002即可)
port 7001 #绑定端口
bind 192.168.88.14 #绑定对外连接提供的ip
daemonize yes #开启守护进程
pidfile 7001.pid #进程文件名
cluster-enabled yes #是否是集群
cluster-config-file 7001_node.conf #集群配置文件
cluster-node-timeout 15000 #集群连接超时时间单位是ms
appendonly yes #数据持久化类型
192.168.88.5机器上的配置
mkdir conf #在redis所在的目录下创建
touch 7004.conf 7005.conf 7006.conf
vim 7004.conf#编辑文件并且把如下内容拷贝进去
(剩下的7005.conf和7006.conf也是如此,把一下7004改成7005和7006即可)
port 7004 #绑定端口
bind 192.168.88.5 #绑定对外连接提供的ip
daemonize yes #开启守护进程
pidfile 7004.pid #进程文件名
cluster-enabled yes #是否是集群
cluster-config-file 7004_node.conf #集群配置文件
cluster-node-timeout 15000 #集群连接超时时间单位是ms
appendonly yes #数据持久化类型
2.建立集群
redis-cli --cluster create 192.168.88.14:7001 192.168.88.14:7002 192.168.88.14:7003 192.168.88.5:7004 192.168.88.5:7005 192.168.88.5:7006 --cluster-replicas 1
--cluster-replicas 1 #表示创建为1个集群

3.测试
以集群登陆redis
redis-cli -c -h 192.168.88.14 -p 7001
Redis 5.0的更多相关文章
- Redis 3.0 与 3.2 配置文件变化
一.Redis3.0 与 3.2 配置文件对比 1. clone redis git clone https://github.com/antirez/redis.git 2. checkout分支 ...
- Redis 3.0 Cluster集群配置
Redis 3.0 Cluster集群配置 安装环境依赖 安装gcc:yum install gcc 安装zlib:yum install zib 安装ruby:yum install ruby 安装 ...
- Redis 3.0正式版发布,正式支持Redis集群
Redis是一个开源.基于C语言.基于内存亦可持久化的高性能NoSQL数据库,同时,它还提供了多种语言的API.近日,Redis 3.0在经过6个RC版本后,其正式版终于发布了.Redis 3.0的最 ...
- Redis 3.0.0 集群部署
简述: 1.0.1:redis cluster的现状 目前redis支持的cluster特性 1):节点自动发现 2):slave->master 选举,集群容错 3):Hot reshardi ...
- 161128、Redis 4.0发布及其新功能介绍
Redis 4.0-rc1 发布了,这是 4.0 的首个 RC 版.Redis 是一个高性能的key-value数据库.Redis 的出现,很大程度补偿了memcached这类keyvalue存储的不 ...
- Redis 3.0 集群搭建
Redis 3.0 集群搭建 开启两个虚拟机 分别在两个虚拟机上开启3个Redis实例 3主3从两个虚拟机里的实例互为主备 下面分别在两个虚拟机上安装,网络设置参照codis集群的前两个主机 分别关闭 ...
- Redis 3.0.2集群搭建以及相关问题汇总
Redis3 正式支持了 cluster,是为了解决构建redis集群时的诸多不便 (1)像操作单个redis一样操作key,不用操心key在哪个节点上(2)在线动态添加.删除redis节点,不用停止 ...
- Redis 3.0集群 Window搭建方案
Redis 3.0集群 Window搭建方案 1.集群安装前准备 安装Ruby环境,安装:rubyinstaller-2.3.0-x64.exe http://dl.bintray.com/onecl ...
- Redis 4.0新功能介绍
Redis 的作者 antirez 在三天之前通过博客文章<The first release candidate of Redis 4.0 is out>发布了 Redis 4.0 的第 ...
- 安装Redis 4.0单实例
一.Redis简单介绍 转载于网络 Redis是一个开源(BSD许可)的内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件.由于Redis采用运行在内存中的数据集工作方式,其性能卓越,能支持 ...
随机推荐
- Linux vim替换命令
#替换每一行的第一个a:%s/a/b/#全部替换:%s/a/b/g#替换/时需要转义"\/"
- 设置apache服务器的访问证书,支持https访问,windows
windows下载安装openssl http://slproweb.com/products/Win32OpenSSL.html windows证书的生成 安装成功后命令行执行 1.私钥,生成的文件 ...
- Open Project' has encountered a problem
用Eclipse作android开发时,打开IDE,经常有的工程目录点击后会出现下面的问题提示: 这种情况往往是工程文件夹中的.project文件丢失了,所以从别的工程复制过来,就可以用啦.
- HDU - 6253 Knightmare (打表+拉格朗日插值)
题目链接 题意:一个马在无限大的棋盘中跳,问跳n步能跳到多少个不同的格子. 首先写个打表程序打一下n比较小的时候的表: #include<bits/stdc++.h> using name ...
- MySQL显示ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)解决方法
MySQL显示ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)解决方法 2.4K 解决方法: 第一步cd ...
- 阅读之MySQL数据库分表
移动互联网时代,海量的用户数据每天都在产生,基于用户使用数据等这样的分析,都需要依靠数据统计和分析,当数据量小时,数据库方面的优化显得不太重要,一旦数据量越来越大,系统响应会变慢,TPS直线下降,直至 ...
- Python:n个点的费马问题
问题描述 在平面内有n(n>=3)个点N1(x1,y1),N2(x2,y2),...,Nn(xn,yn),现求一点P(x,y),使得P到各点直线距离之和最小. 算法分析 当n=3时,这是著名的三 ...
- 如何让一个sprite绕一个点旋转,同时又可以实现指定旋转角度并慢慢停下的效果
如何让一个sprite绕一个点旋转,同时又可以实现指定旋转角度并慢慢停下的效果 首先列出sprite围绕一个点旋转的公式,这个可以自己推导,假设sprite的起始位置为(x1,y1),围绕旋转的中心点 ...
- jQuery_val()操作
完成对输入或者选择内容的获取,以及更改 代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...
- Linux 环境安装运行Sqlmap
1.官网下载 .tar.gz 文件 官网地址:http://sqlmap.org/ 2.登录访问linux环境,将压缩包放入/usr/local 路径. 3.在该路径下通过 tar -xzvf f ...