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学习视频!!!