Redis简介

redis(Remote Dictionary Server)是一种开源的、支持网络、基于内存、可持久化的key-value数据库

优势特点

1.性能高,每秒十万左右读写速度
2.丰富的数据类型,key-value的value可以是String、List、Hash、Set、sorted set
3.原子性,所有单操作都是原子性的
4.丰富的特性,发布/订阅、通知、key过期等等

数据类型

这里说的数据类型都是指,key-value中value的数据类型,redis就是一个key-value数据库。它的优势在于value是多样的
1.String:最基本的,二进制安全,最大512MB
2.Hash:如果把redis想象成一个值可以是不同数据类型map。那么Hash就像是map中嵌一个map
3.List:有序集合
4.Set:无序不重复集合
5.sorted set:有序不重复集合。它的顺序是通过给每个元素关联一个double类型的分数值实现的,值是唯一,分数可以重复

数据库

redis是一个字典结构的存储服务器,一个redis实例提供多个用于存储的字典,客户端可以指定操作那个字典。这与关系型数据库实例中有多个数据库类似。
可以通过修改配置文件中的database选项,设置redis数据库数量。默认16个,以0开始递增数字 命名。默认使用0号
redis数据库与关系型数据库有很大区别。1.不支持自定义数据库名称。2.不支持为每个数据库设置不同密码。3.最重要的一个实例的多个数据库之间不是完全隔离的,比如flushall命令可以清空redis实例中所有数据库中的数据。所以,其实这些数据库更像是一种命名空间,不适合存储不同应用程序的数据

发布/订阅

redis一个很好的地方就是,它把功能都设计的很容易使用,比如订阅发布:
1.客户端使用subscribe channel[channel]命令订阅某几个频道,客户端进入阻断状态
2.某个客户端使用publish channel message发布信息,所有订阅了这个频道的客户端都会收到此信息

事务

1.multi开始事务
2.编写命令加入事务队列中
3.exec命令触发事务
redis的事务执行并不是原子性的,它可以理解为一个打包的执行脚本,中间某条指令的失败不会导致前面已执行指令的回滚,也不会造成后续指令不做

管道技术

redis是一种请求/响应模式的tcp服务,意思就是说,redis客户端向服务端发送一个请求,并监听socket返回。通常是以阻塞模式,等待服务器响应。
redis管道技术就是,在服务端未响应时,客户端可以继续向服务端发送请求,并一次性获取所有请求的响应。管道技术能大大提高redis服务性能
当短时间内产生大量请求,比如项目启动之初需要将大量初始化数据放入到redis中,可以考虑使用管道技术

set命令的几个参数

set key value [expiration EX seconds|PX milliseconds] [NX|XX]
EX seconds:将键的过期时间设置为seconds秒。执行SET key value EX seconds的效果等同于执行SETEX key seconds value。
PX milliseconds:将键的过期时间设置为milliseconds毫秒。执行SET key value PX milliseconds 的效果等同于执行PSETEX key milliseconds value。
NX :只在键不存在时,才对键进行设置操作。执行SET key value NX的效果等同于执行 SETNX key value
XX :只在键已经存在时,才对键进行设置操作。

在Redis 2.6.12版本以前,SET命令总是返回OK。从Redis 2.6.12版本开始,SET命令只在设置操作成功完成时才返回OK;如果命令使用了NX或者XX选项,但是因为条件没达到而造成设置操作未执行,那么命令将返回空批量回复(nil)

常用业务场景

1.缓存,跟其他缓存比,很大的一个优势,支持多种数据类型
2.计数器,例如点赞数、收藏、分享数等等
等等这里不写

你可能感兴趣的:(redis)