redis
Redis简介
Redis是一个内存型的NoSQL数据库.
NoSQL数据库和关系型数据库
关系型数据库, 数据是通过关系的形式进行存储和管理的.
NoSQL数据库, 泛指非关系型数据库. Redis, MongDB, …
Redis概述
- Redis: REmote DIrectory Server. 远程字典服务. 在内存中通过k-v结构存放数据.
- Redis官网: https://redis.io/, 中文网站: http://redis.cn/
- Redis的版本: 奇数版表示开发版本, 偶数版表示稳定版. 实际开发中, 一定使用偶数版本. Redis从3.0.0开始支持集群(Cluster).
- Redis特点:
存储和管理数据的结构: Key-Value结构, 有时候把Redis简称为一种kv服务器
Redis读写数据是在内存中进行的, 读写速度极快, 效率高
内存空间较小, 不适合存储海量数据
容易造成数据丢失. Redis会定期将内存数据保存到硬盘中, 可以减少数据的丢失.
实际使用中, Redis通常作为缓存使用, 配合关系型数据库一起工作.
- 各版本下载地址: http://download.redis.io/releases/
单机版Redis安装
1.虚拟机克隆
从快照克隆, 克隆后, 需要修改/etc/udev/rules.d/70-persistent-net.rules文件, 将网卡信息和网卡地址进行匹配. 同时需要修改/etc/sysconfig/network-scripts/ifcfg-eth0文件, 设置IP地址.
2.安装单机版Redis
-
上传安装包并解压缩
-
安装GCC, 用于进行代码的编译.
yum install gcc-c++ -y -
进入redis解压目录, 执行代码编译
make -
进入redis解压目录, 执行代码编译
make -
进行安装
make install [PREFIX=/usr/local/redis]. 建议携带参数, 否则在当前目录进行安装. -
前台启动Redis服务
进入/usr/local/redis/bin/目录, 执行redis-server命令即可, 这样启动会占据终端. -
后台启动Redis服务(精灵模式)
a) 从/usr/local/temp/redis-4.0.14/目录下拷贝redis.conf到安装目录
cp /usr/local/temp/redis-4.0.14/redis.conf /usr/local/redis/
b) 修改redis.conf配置文件
注释掉bind 127.0.0.1
关闭保护模式:
开启后台模式
c) 后台模式启动: bin/redis-server redis.conf
d) 关闭redis服务: bin/redis-cli shutdown
Redis常用的数据类型和命令
1.Redis中的数据类型
Redis是以k-v结构存放数据的. 数据类型指的是v部分的类型. Redis中有五种数据类型: string, hash, list, set, zset
- string, 表示字符串类型. 此时类似于Map<String, String>
- hash, k-v结构. 此时类似于Map<String, Map<String, String>>
- list, Map<String, ArrayList>
- set, Map<String, HashSet>
- zset, Map<String, SortedSet>
2.常用命令
2.1 通用命令
- ping, 测试连接, 成功时返回PONG
- echo, 测试连接, 输出信息到控制台
- quit, 退出客户端连接
- clear, 清屏
- select, 选择当前要使用的database, 通过索引进行定位. select index
- keys, 查询相关的key. 测试时使用, 工作中不能使用!
- del, 删除指定的key. del key1[ key2 …]
- expire, 设置key的存活时间, 单位是秒, expire key seconds
- ttl, 查看key的剩余存活时间, -1表示永久保存, -2表示key不存在, 正整数表示剩余时间.
- persist, 取消key的过期时间.
- flushdb, 清空当前database中的所有数据.
- flushall, 清空所有database中的数据.
2.2 string命令
- set, 新增或修改数据. 当key不存在时, 则新增, key存在时则修改.
set key value - get, 通过key获取value.
- incr, 自增. incr key
- decr, 自减. decr key
2.3 hash命令
- hset, 新增或修改数据.
hset key field value - hget, 获取数据
hget key field - hkeys, 获取一个key中所有的field
hkeys key - hdel, 删除一个key中指定的field
hdel key field [field2 …]
Redis集群
- 认识集群
集群, Cluster. 当一台服务器无法满足访问需求时, 可以使用多态服务器对外提供服务. 当用户访问时, 有一个统一的入口(对用户要屏蔽多台服务器的感觉).
2.Redis集群
- Redis集群是需要程序员自己搭建的. 它是基于Ruby实现的. Redis集群通过CRC16的算法来计算数据的存储位置. Redis集群中, 将所有的集群节点拆分为16384个slot(槽), 每个槽位大小不固定(由机器的性能决定). 当用户请求到来时, Redis集群会先通过CRC16算法计算该数据应该出现在哪个槽位. CRC16算法可以保证相同的数据计算出的槽位是相同的.
- Redis集群为了保证集群的可靠性, 采用主从(主备)模式. 集群节点由主机(Master)来充当, 每台Master至少要求一台备份机(Slaver)
- Redis集群安装
生产环境中, 需要有多态安装了Redis的服务器构成集群. 课上搭建伪集群, 及在一台虚拟机中安装多个Redis服务, 由多个Redis服务构成集群.
a) 准备多个Redis服务. 我们准备6个Redis, 最小的集群.
- 关闭单机版Redis服务, 删除dump.rdb文件.
- 在/usr/local/目录下新建redisCluster目录, 复制6个redis目录到该目录下
- 修改每个redis的端口号, 设置为7001~7006
- 开启每个Redis的集群支持
b) 安装ruby环境
- 上传ruby压缩包并解压缩
- 安装openssl和openssl-devel支持
yum install –y openssl openssl-devel - 进入解压目录, 进行配置
./configure --prefix=/usr/local/ruby - 编译并安装
make && make install - 配置环境变量
vim /etc/profile
c) 安装redis提供的ruby脚本库
gem install redis-4.0.3.gem
d) 编写shell脚本, 启动6个redis服务. 默认.sh文件没有执行权限, 通过以下命令可以修改权限: chmod 755 *.sh
cd redis1
bin/redis-server redis.conf
cd ../redis2
bin/redis-server redis.conf
cd ../redis3
bin/redis-server redis.conf
cd ../redis4
bin/redis-server redis.conf
cd ../redis5
bin/redis-server redis.conf
cd ../redis6
bin/redis-server redis.conf
e) 查看redis节点是否启动
ps –aux | grep redis
f) 从源码目录下的src目录复制redis-trib.rb到集群目录
cp /usr/local/temp/redis-4.0.14/src/redis-trib.rb /usr/local/redisCluster
g) 执行redis-trib.rb进行集群的创建
./redis-trib.rb create --replicas 1 192.168.15.20:7001 192.168.15.20:7002 192.168.15.20:7003 192.168.15.20:7004 192.168.15.20:7005 192.168.15.20:7006
h) 随便连接一个节点进行测试
redis1/bin/redis-cli -p 7001 –c
i) 编写关闭集群的shell脚本
redis1/bin/redis-cli -p 7001 shutdown
redis2/bin/redis-cli -p 7002 shutdown
redis3/bin/redis-cli -p 7003 shutdown
redis4/bin/redis-cli -p 7004 shutdown
redis5/bin/redis-cli -p 7005 shutdown
redis6/bin/redis-cli -p 7006 shutdown
Redis客户端
1.桌面客户端
Redis Desktop Manager, 桌面管理工具
下载地址: https://github.com/uglide/RedisDesktopManager/releases
2.Jedis
通过Java代码操作Redis的API. Redis的版本是多少, 就应该使用对应版本的Jedis.
本文地址:https://blog.csdn.net/qq_37206355/article/details/107450355
上一篇: HTML连载80-多重背景图片及其练习
下一篇: 理解面向对象思想