Redis简介

什么是实时系统: 瞬时可以实现某些数据的统计或者是功能的实现

*_Redis由来:

*_什么是redis?

由C语言实现的直接操作内存的开源的高性能的数据库软件

*_redis应用场景

缓存(数据查询,短连接,新闻内容、商品内容等等)最多使用

聊天室的在线好友列表

任务队列(秒杀、抢购、12306)

应用排行榜

网站访问统计

什么是Redis?

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

Redis支持数据的备份,即master-slave模式的数据备份。

Redis应用场景

主要能够体现 解决数据库的访问压力。

例如:短信验证码时间有效期、session共享解决方案

Redis优势

性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered
Sets 数据类型操作。

原子 –
Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。

丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis与其他key-value存储有什么不同?

Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

Redis的安装

Redis的安装

Redis是c语言开发的。

安装redis需要c语言的编译环境。如果没有gcc需要在线安装。yum install gcc-c++

安装步骤:

第一步:redis的源码包上传到linux系统。

第二步:解压缩redis。

第三步:编译。进入redis源码目录。make

第四步:安装。make install PREFIX=/usr/local/redis

PREFIX参数指定redis的安装目录。一般软件安装到/usr目录下

安装redis版本2

redis安装包: 源码形式提供 .c文件

将.c编译为.o文件 需要安装: gcc

将编译后的文件安装在linux系统上

等价于 希望在当前的系统安装JAVA版本的QQ,下载到的安装文件以.java源码形式提供.

需要:1_下载GCC 在系统上有JDK(GCC),

2_编译: 通过JDK将源码编译为字节码

3_安装: 将字节码进行打包设置 .bat

1_获取安装包 redis-3.0.7.tar.gz

2_利用filezilla.exe 将安装包上传到/root/

3_cd /root/ ___> tar -zxvf redis-3.0.7.tar.gz

4_编译 将源码翻译为.o文件

cd /root/redis-3.0.7 ___> make

5_创建一个目录 /usr/loca/redis (安装目录)

6_安装reids

cd /root/redis-3.0.7

make PREFIX=/usr/local/redis install

7_ 由于redis启动需要一个配置文件,将配置文件复制到 /root/redis/

cp /root/redis-3.0.7/redis.conf /root/redis

8_ 修改/usr/local/redis/redis.conf

9_ 启动服务端 ./bin/redis-server ./redis.conf

防火墙打开6379端口

/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT

将打开的端口的访问规则保存在文件中

/etc/rc.d/init.d/iptables save

查看机器开放的端口号

/etc/init.d/iptables status

10_启动客户端 ./bin/redis-cli

11_测试redis是否正确安装成功

向服务器发送 ping 命令,服务器返回 pong

向服务器发送 set name tom

get name 命令可以看到可以获取到tom的信息

向服务器发送keys *

可以查看服务器中一共有多少键值对的数据,可以查看到各个键值类型数据

连接redis
redis的启动:

前端启动:在redis的安装目录下直接启动redis-server

[root@localhost bin]# ./redis-server

后台启动:

把/root/redis-3.0.0/redis.conf复制到/usr/local/redis/bin目录下

[root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis/bin/

修改配置文件:

[root@localhost bin]# ./redis-server redis.conf

查看redis进程:

[root@localhost bin]# ps aux|grep redis

root 5190 0.1 0.3 33936 1712 ? Ssl 18:23 0:00 ./redis-server *:6379

root 5196 0.0 0.1 4356 728 pts/0 S+ 18:24 0:00 grep redis

[root@localhost bin]#

Redis-cli

[root@localhost bin]# ./redis-cli

默认连接localhost运行在6379端口的redis服务。

[root@localhost bin]# ./redis-cli -h 192.168.25.128 -p 6379

-h:连接的服务器的地址

-p:服务的端口号

关闭redis:[root@localhost bin]# ./redis-cli shutdown

Redis五种数据类型

String:key-value(做缓存)

Redis中所有的数据都是字符串。命令不区分大小写,key是区分大小写的。Redis是单线程的。Redis中不适合保存内容大的数据。

get、set、

incr:加一(生成id)

Decr:减一

Hash:key-fields-values(做缓存)

相当于一个key对于一个map,map中还有key-value

使用hash对key进行归类。

Hset:向hash中添加内容

Hget:从hash中取内容

List:有顺序可重复

192.168.25.128:6379> lpush list1 a b c d

(integer) 4

192.168.25.128:6379> lrange list1 0 -1

  1. “d”

  2. “c”

  3. “b”

  4. “a”

192.168.25.128:6379> rpush list1 1 2 3 4

(integer) 8

192.168.25.128:6379> lrange list1 0 -1

  1. “d”

  2. “c”

  3. “b”

  4. “a”

  5. “1”

  6. “2”

  7. “3”

  8. “4”

192.168.25.128:6379>

192.168.25.128:6379> lpop list1

“d”

192.168.25.128:6379> lrange list1 0 -1

  1. “c”

  2. “b”

  3. “a”

  4. “1”

  5. “2”

  6. “3”

  7. “4”

192.168.25.128:6379> rpop list1

“4”

192.168.25.128:6379> lrange list1 0 -1

  1. “c”

  2. “b”

  3. “a”

  4. “1”

  5. “2”

  6. “3”

192.168.25.128:6379>

Set:元素无顺序,不能重复

192.168.25.128:6379> sadd set1 a b c c c d

(integer) 4

192.168.25.128:6379> smembers set1

  1. “b”

  2. “c”

  3. “d”

  4. “a”

192.168.25.128:6379> srem set1 a

(integer) 1

192.168.25.128:6379> smembers set1

  1. “b”

  2. “c”

  3. “d”

192.168.25.128:6379>

还有集合运算命令,自学。

SortedSet(zset):有顺序,不能重复

192.168.25.128:6379> zadd zset1 2 a 5 b 1 c 6 d

(integer) 4

192.168.25.128:6379> zrange zset1 0 -1

  1. “c”

  2. “a”

  3. “b”

  4. “d”

192.168.25.128:6379> zrem zset1 a

(integer) 1

192.168.25.128:6379> zrange zset1 0 -1

  1. “c”

  2. “b”

  3. “d”

192.168.25.128:6379> zrevrange zset1 0 -1

  1. “d”

  2. “b”

  3. “c”

192.168.25.128:6379> zrange zset1 0 -1 withscores

  1. “c”

  2. “1”

  3. “b”

  4. “5”

  5. “d”

  6. “6”

192.168.25.128:6379> zrevrange zset1 0 -1 withscores

  1. “d”

  2. “6”

  3. “b”

  4. “5”

  5. “c”

  6. “1”

192.168.25.128:6379>

列出所有的keys

可以使用KEYS 命令

KEYS pattern

例如,

列出所有的key

redis> keys *

列出匹配的key

redis>keys apple*

  1. apple1

  2. apple2

Key命令

设置key的过期时间。

Expire key second:设置key的过期时间

Ttl key:查看key的有效期

Persist key:清除key的过期时间。Key持久化。

192.168.25.128:6379> expire Hello 100

(integer) 1

192.168.25.128:6379> ttl Hello

(integer) 77

Redis的持久化方案

Redis的所有数据都是保存到内存中的。

Rdb:快照形式,定期把内存中当前时刻的数据保存到磁盘。Redis默认支持的持久化方案。

aof形式:append only
file。把所有对redis数据库操作的命令,增删改操作的命令。保存到文件中。数据库恢复时把所有的命令执行一遍即可。

在redis.conf配置文件中配置。

Rdb:

Aof的配置:

两种持久化方案同时开启使用aof文件来恢复数据库。

Redis集群的搭建

redis-cluster架构图

redis-cluster投票:容错

架构细节:

(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.

(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster
负责维护node<->slot<->value

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value
时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384
求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis
会根据节点数量大致均等的将哈希槽映射到不同的节点

Redis集群的搭建

Redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机。

Redis集群至少需要6台服务器。

搭建伪分布式。可以使用一台虚拟机运行6个redis实例。需要修改redis的端口号7001-7006

集群搭建环境

1、使用ruby脚本搭建集群。需要ruby的运行环境。

安装ruby

yum install ruby

yum install rubygems

  1. 安装ruby脚本运行使用的包。

[root@localhost ~]# gem install redis-3.0.0.gem

Successfully installed redis-3.0.0

1 gem installed

Installing ri documentation for redis-3.0.0…

Installing RDoc documentation for redis-3.0.0…

[root@localhost ~]#

[root@localhost ~]# cd redis-3.0.0/src

[root@localhost src]# ll *.rb

-rwxrwxr-x. 1 root root 48141 Apr 1 2015 redis-trib.rb

搭建步骤

需要6台redis服务器。搭建伪分布式。

需要6个redis实例。

需要运行在不同的端口7001-7006

第一步:创建6个redis实例,每个实例运行在不同的端口。需要修改redis.conf配置文件。配置文件中还需要把cluster-enabled
yes前的注释去掉。

第二步:启动每个redis实例。

第三步:使用ruby脚本搭建集群。

./redis-trib.rb create --replicas 1 192.168.25.130:7001 192.168.25.130:7002 192.168.25.130:7003 192.168.25.130:7004 192.168.25.130:7005 192.168.25.130:7006

创建关闭集群的脚本:

[root@localhost redis-cluster]# vim shutdow-all.sh

redis01/redis-cli -p 7001 shutdown

redis01/redis-cli -p 7002 shutdown

redis01/redis-cli -p 7003 shutdown

redis01/redis-cli -p 7004 shutdown

redis01/redis-cli -p 7005 shutdown

redis01/redis-cli -p 7006 shutdown

[root@localhost redis-cluster]# chmod u+x shutdow-all.sh

[root@localhost redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.25.128:7001 192.168.25.128:7002 192.168.25.128:7003 192.168.25.128:7004 192.168.25.128:7005 192.168.25.128:7006 >>> Creating cluster Connecting to node 192.168.25.128:7001: OK Connecting to node 192.168.25.128:7002: OK Connecting to node 192.168.25.128:7003: OK Connecting to node 192.168.25.128:7004: OK Connecting to node 192.168.25.128:7005: OK Connecting to node 192.168.25.128:7006: OK >>> Performing hash slots allocation on 6 nodes… Using 3 masters: 192.168.25.128:7001 192.168.25.128:7002 192.168.25.128:7003 Adding replica 192.168.25.128:7004 to 192.168.25.128:7001 Adding replica 192.168.25.128:7005 to 192.168.25.128:7002 Adding replica 192.168.25.128:7006 to 192.168.25.128:7003 M: 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3 192.168.25.128:7001 slots:0-5460 (5461 slots) master M: 8cd93a9a943b4ef851af6a03edd699a6061ace01 192.168.25.128:7002 slots:5461-10922 (5462 slots) master M: 2935007902d83f20b1253d7f43dae32aab9744e6 192.168.25.128:7003 slots:10923-16383 (5461 slots) master S: 74f9d9706f848471583929fc8bbde3c8e99e211b 192.168.25.128:7004 replicates 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3 S: 42cc9e25ebb19dda92591364c1df4b3a518b795b 192.168.25.128:7005 replicates 8cd93a9a943b4ef851af6a03edd699a6061ace01 S: 8b1b11d509d29659c2831e7a9f6469c060dfcd39 192.168.25.128:7006 replicates 2935007902d83f20b1253d7f43dae32aab9744e6 Can I set the above configuration? (type ‘yes’ to accept): yes >>> Nodes configuration updated >>> Assign a different config epoch to each node >>> Sending CLUSTER MEET messages to join the cluster Waiting for the cluster to join… >>> Performing Cluster Check (using node 192.168.25.128:7001) M: 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3 192.168.25.128:7001 slots:0-5460 (5461 slots) master M: 8cd93a9a943b4ef851af6a03edd699a6061ace01 192.168.25.128:7002 slots:5461-10922 (5462 slots) master M: 2935007902d83f20b1253d7f43dae32aab9744e6 192.168.25.128:7003 slots:10923-16383 (5461 slots) master M: 74f9d9706f848471583929fc8bbde3c8e99e211b 192.168.25.128:7004 slots: (0 slots) master replicates 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3 M: 42cc9e25ebb19dda92591364c1df4b3a518b795b 192.168.25.128:7005 slots: (0 slots) master replicates 8cd93a9a943b4ef851af6a03edd699a6061ace01 M: 8b1b11d509d29659c2831e7a9f6469c060dfcd39 192.168.25.128:7006 slots: (0 slots) master replicates 2935007902d83f20b1253d7f43dae32aab9744e6 [OK] All nodes agree about slots configuration. >>> Check for open slots… >>> Check slots coverage… [OK] All 16384 slots covered. [root@localhost redis-cluster]#
集群的使用方法

Redis-cli连接集群。

[root@localhost redis-cluster]# redis01/redis-cli -p 7002 -c

-c:代表连接的是redis集群

Jedis

需要把jedis依赖的jar包添加到工程中。Maven工程中需要把jedis的坐标添加到依赖。

推荐添加到服务层。E3-content-Service工程中。

连接单机版

第一步:创建一个Jedis对象。需要指定服务端的ip及端口。

第二步:使用Jedis对象操作数据库,每个redis命令对应一个方法。

第三步:打印结果。

第四步:关闭Jedis

@Test public void testJedis() throws Exception { // 第一步:创建一个Jedis对象。需要指定服务端的ip及端口。 Jedis jedis = new Jedis(“192.168.25.128”, 6379); // 第二步:使用Jedis对象操作数据库,每个redis命令对应一个方法。 String result = jedis.get(“hello”); // 第三步:打印结果。 System.out.println(result); // 第四步:关闭Jedis jedis.close(); }

Redis从入门到精通相关推荐

  1. Redis从入门到精通:初级篇(转)

    原文链接:http://www.cnblogs.com/xrq730/p/8890896.html,转载请注明出处,谢谢 Redis从入门到精通:初级篇 平时陆陆续续看了不少Redis的文章了,工作中 ...

  2. 视频教程-redis从入门到精通-NoSQL

    redis从入门到精通 本人具有7年java开发经验,两年java教学经验,擅长java开发相关技术,能够熟掌握并应用目前主流web开发技术,如SSH,SSM等,数据库开发技术oracle,,mysq ...

  3. 免费分享Redis从入门到精通的优秀图书

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

  4. Redis从入门到精通,至少要看看这篇!

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"加入公众号专属技术群 来源:http://rrd.me/eDY9S 常用的 SQ ...

  5. Redis从入门到精通|干货篇

    点击上方"Java中文社群",选择"设为星标" 终身学习者,以编程为乐! 来源:http://rrd.me/eDY9S 常用的 SQL 数据库的数据都是存在磁盘 ...

  6. redis课程视频 黄建宏_求redis从入门到精通视频教程【50讲全】

    展开全部 网页链接是不是这个? 课程目录: 课时62616964757a686964616fe78988e69d83313333656565361.Redis 简介(上) 课时2.Redis 简介(下 ...

  7. Redis从入门到精通(二)

    八.三种特殊数据类型 8.1.geospatial 地理位置 Redis的Geo可以推算地理位置的信息 只有6个命令: geoadd:添加地理位置的坐标. geopos:获取地理位置的坐标. geod ...

  8. 分布式架构-Redis 从入门到精通 完整案例 附源码

    导读 篇幅较长,干货十足,阅读需要花点时间,全部手打出来的字,难免出现错别字,敬请谅解.珍惜原创,转载请注明出处,谢谢~! NoSql介绍与Redis介绍 什么是Redis? Redis是用C语言开发 ...

  9. 尚硅谷Redis6从入门到精通

    本博客为尚硅谷课程笔记,课程来源:[尚硅谷]Redis 6 入门到精通 超详细 教程_哔哩哔哩_bilibili 本博客参考内容: https://blog.csdn.net/weixin_47872 ...

最新文章

  1. 捋一下测序后生信分析内容及其常用软件
  2. oracle执行计划分析(转载)
  3. 登录MySQL数据库
  4. js手机端时间区间_js 时间区间
  5. 改变bantchsize发现loss增大_肺内发现磨玻璃结节,一定就是早期肺癌吗?
  6. 泛微文档存放在服务器哪个地址,泛微OA根据文档的docid查询文档附件存放的路径...
  7. node服务:日志、配置、路由与控制器
  8. linux limit
  9. JDK源码解析之 Java.lang.StringBuilder
  10. 修改本地数据库root权限密码
  11. 魔域手游如何修改服务器id,魔域互通端游手游架设
  12. javaweb表格制作举例
  13. 美团和支付宝,越来越像
  14. 为什么说盲盒市场充满机遇
  15. 自定义控件 仿微信朋友圈文字展开全文功能
  16. Anaconda安装说明
  17. 2021年茶艺师(中级)考试报名及茶艺师(中级)考试试卷
  18. java的while、do while循环和案例
  19. 如何在Android 11 中正确请求位置权限?以及Android 8 - 11位置权限的变化及适配方法!
  20. 南京晓庄学院计算机专业咋样,南京晓庄学院有哪些专业及什么专业好

热门文章

  1. Exploring the Regularity of Sparse Structure in Convolutional Neural Networks(在卷积神经网络中探索稀疏结构的规律性)
  2. html5闪光效果,css特效-一道闪光在图片上划过
  3. oracle rsm 进程,Oracle 10g 的后台进程
  4. 搞事开始——Python基于PC版微信实现机器人
  5. 雷军:小米今年预计销售200亿 站在风口猪都会飞
  6. 2021-08-11 TM32F103 Buffer FatFs 文件系统移植
  7. 西门子数控系统的机床数据采集
  8. 摄像头录像时出现连接错误
  9. linux嵌入式红绿灯,嵌入式上机课设(红绿灯)..doc
  10. h5锁屏提醒-锁横屏和锁竖屏