共计 3378 个字符,预计需要花费 9 分钟才能阅读完成。
Redis 学习指标
Redis 的介绍及装置
Redis 是什么?
Redis 是一个开源(BSD 许可)的,内存 中的数据结构存储系统,它能够用作 数据库、缓存和消息中间件 。它反对多种类型的数据结构,如 字符串(strings)
, 散列(hashes)
,列表(lists)
,汇合(sets)
,有序汇合(sorted sets)
与范畴查问,bitmaps,hyperloglogs 和 天文空间(geospatial)索引半径查问。Redis 内置了复制(replication),LUA 脚本(Lua scripting),LRU 驱动事件(LRU eviction),事务(transactions)和不同级别的 磁盘长久化(persistence),并通过Redis 哨兵(Sentinel) 和主动分区(Cluster)提供高可用性(high availability)
性能
上面是官网的 bench-mark 数据:
测试实现了 50 个并发执行 100000 个申请。
设置和获取的值是一个 256 字节字符串。
后果: 读的速度是 110000 次 /s, 写的速度是 81000 次 /s
Redis 历史简介
2008 年,意大利一家守业公司 Merzia 的创始人 Salvatore Sanfilippo 为了防止 MySQL 的低性能,亲自定做一个数据库,并于 2009 年开发实现,这个就是 Redis。
从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。
从 2013 年 5 月开始,Redis 的开发由 Pivotal 资助。
阐明:Pivotal 公司是由 EMC 和 VMware 联结成立的一家新公司。Pivotal 心愿为新一代的利用提供一个原生的根底,建设在具备领导力的云和网络公司一直转型的 IT 个性之上。Pivotal 的使命是推广这些翻新,提供给企业 IT 架构师和独立软件提供商。
反对语言
反对的数据类型
string
、hash
、list
、set
、sorted set
装置
下载地址
http://redis.io/
上传至服务器
解压
tar zxvf redis-5.0.3.tar.gz
装置依赖
yum -y install gcc-c++ autoconf automake
预编译
切换到解压目录
cd redis-5.0.3/
make
装置
创立装置目录
mkdir -p /usr/local/redis
不应用:make install(make install 默认装置到 /usr/local/bin 目录下)
应用:如果须要指定装置门路,须要增加 PREFIX 参数
make PREFIX=/usr/local/redis/ install
装置胜利如图
Redis-cli
: 客户端
Redis-server
: 服务器端
启动
装置的默认指标门路:/usr/local/redis/bin
启动
./redis-server
默认为前台启动,批改为后盾启动
复制 redis.conf 至装置门路下
cp redis.conf /usr/local/redis/bin/
批改装置门路下的 redis.conf,将 daemonize
批改为 yes
启动时,指定配置文件门路即可
通过 windows 客户端拜访
装置 Redis 客户端
建设连贯 -> 失败
批改配置文件 redis.conf
正文掉 bind 127.0.0.1
能够使所有的 ip 拜访 redis,若是想指定多个 ip 拜访,但并不是全副的 ip 拜访,能够 bind 设置
敞开保护模式,批改为 no
增加拜访认证
批改后 kill -9 XXXX 杀死 redis 过程,重启 redis
再次建设连贯 -> 胜利
咱们能够批改默认数据库的数量 默认 16
批改 database 32 则默认为 32 个数据库
批改后 kill -9 XXXX 杀死 redis 过程,重启 redis 即可看到成果
关系型数据库与非关系型数据库
关系型数据库
采纳关系模型来组织数据的数据库,关系模型就是二维表格模型。一张二维表的表名就是关系,二维表中的一行就是一条记录,二维表中的一列就是一个字段。
长处
- 容易了解
- 使用方便,通用的 sql 语言
- 易于保护,丰盛的完整性 (实体完整性、参照完整性和用户定义的完整性) 大大降低了数据冗余和数据不统一的概率
毛病
- 磁盘 I / O 是并发的瓶颈
- 海量数据查问效率低
- 横向扩大艰难,无奈简略的通过增加硬件和服务节点来扩大性能和负载能力,当须要对数据库进行降级和扩大时,须要停机保护和数据迁徙
- 多表的关联查问以及简单的数据分析类型的简单 sql 查问,性能欠佳。因为要保障 acid,必须依照三范式设计。
数据库
Orcale,Sql Server,MySql,DB2
非关系型数据库
非关系型,分布式,个别不保障遵循 ACID 准则的数据存储系统。键值对存储,构造不固定。
长处
- 依据须要增加字段,不须要多表联查。仅需 id 取出对应的 value
- 实用于 SNS(社会化网络服务软件。比方 facebook,微博)
- 严格上讲不是一种数据库,而是一种数据结构化存储办法的汇合
毛病
- 只适宜存储一些较为简单的数据
- 不适合简单查问的数据
- 不适合长久存储海量数据
数据库
- K-V:Redis,Memcache
- 文档:MongoDB
- 搜寻:Elasticsearch,Solr
- 可扩展性分布式:HBase
比拟
内容 | 关系型数据库 | 非关系型数据库 |
---|---|---|
老本 | 有些须要免费(Orcale) | 根本都是开源 |
查问数据 | 存贮存于硬盘中,速度慢 | 数据存于缓存中,速度快 |
存储格局 | 只反对根底类型 | K-V, 文档,图片等 |
扩展性 | 有多表查问机制,扩大艰难 | 数据之间没有耦合,容易扩大 |
持久性 | 实用长久存储,海量存储 | 不实用长久存储,海量存储 |
数据一致性 | 事务能力强,强调数据的强一致性 | 事务能力弱,强调数据的最终一致性 |
Redis-cli 操作 Redis
Redis-cli 连贯 Redis
-h
: 用于指定 ip
-p
: 用于指定端口
-a
: 用于指定认证明码
PING 命令返回 PONG
指定 database
Redis-cli 操作 Redis
操作 String
set
: 增加一条 String 类型数据
get
: 获取一条 String 类型数据
mset
: 增加多条 String 类型数据
mget
: 获取多条 String 类型数据
操作 hash
hset
: 增加一条 hash 类型数据
hget
: 获取一条 hash 类型数据
hmset
: 增加多条 hash 类型数据
hmget
: 获取多条 hash 类型数据
hgetAll
: 获取指定所有 hash 类型数据
hdel
: 删除指定 hash 类型数据(一条或多条)
操作 list
lpush
: 左增加(头)list 类型数据
rpush
: 右增加 (尾) 类型数据
lrange
: 获取 list 类型数据 start 起始下标 end 完结下标 蕴含关系
llen
: 获取条数
lrem
: 删除列表中几个指定 list 类型数据
操作 set
sadd
: 增加 set 类型数据
smembers
: 获取 set 类型数据
scard
: 获取条数
srem
: 删除数据
操作 sorted set
sorted set 是通过分数值来进行排序的,分数值越大,越靠后。
zadd
: 增加 sorted set 类型数据
zrange
: 获取 sorted set 类型数据
zcard
: 获取条数
zrem
: 删除数据
zadd 须要将 Float 或者 Double 类型分数值参数,搁置在值参数之前
Redis 中以层级关系、目录模式存储数据
设置 key 的生效工夫
Redis 有四个不同的命令能够用于设置键的生存工夫 (键能够存在多久) 或过期工夫(键什么时候会被删除) :
EXPlRE <key> <ttl>
: 用于将键 key
的生存工夫设置为 ttl
秒。
PEXPIRE <key> <ttl>
: 用于将键 key
的生存工夫设置为ttl
毫秒。
EXPIREAT <key> < timestamp>
: 用于将键 key
的过期工夫设置为 timestamp
所指定的秒数工夫戳。
PEXPIREAT <key> < timestamp >
: 用于将键 key
的过期工夫设置为 timestamp
所指定的毫秒数工夫戳。
TTL
: 获取的值为 - 1 阐明此 key
没有设置有效期,当值为 - 2 时证实过了有效期。
办法一
办法二
办法三
第一个参数:key
第二个参数:value
第三个参数:NX
是不存在时才 set,XX
是存在时才 set
第四个参数:EX
是秒,PX
是毫秒
删除
del
: 用于删除数据(通用,实用于所有数据类型)
hdel
: 用于删除 hash 类型数据
tips: 命令为 java 中办法名,参数:去除括号,引号,将逗号变空格即可
zadd 须要将 Float 或者 Double 类型参数,搁置在值参数之前
Redis 学习视频!!!