redis是近年来大火的非关系型数据库,对于提高系统的性能瓶颈效果显著,也来学习一下。
1.开启redis服务
redis-cli -h host -p port -a password
简单解释一下:-h后面的为ip,-p后面为端口,-a后面为密码
2.redis的数据类型
a.String(512M)
一个key对应一个value
存值:SET key value,MSET 用户设置一个或多个key-value对
取值:GET key , GETSET(设置指定 key 的值,并返回 key 的旧值),MGET(返回所有给定 key 的值),SETNX(指定的 key 不存在时,为 key 设置指定的值)
b.Hash,适合用于存储对象是一个映射表
存值:HSET key field value ,HSETNX key field value(在字段 field 不存在时,设置哈希表字段的值)
取值:HGET key field ,HGETALL key(取在哈希表中指定 key 的所有字段和值 ),HDEL key field1 [field2] (取存储在哈希表中指定字段的值)
c.List 字符串列表
存值:LPUSH key value1 [value2] 将一个或多个值插入到列表头部
取值:BLPOP key1 [key2 ] timeout(取列表的第一个元素),BRPOP key1 [key2 ] timeout(取最后的一个元素)
d.Set 字符串类型的无序集合
存值:SADD key member1 [member2] 向集合添加一个或多个成员
取值: SMEMBERS key 返回集合中的所有成员
e.zset 字符串类型元素的集合,没有重复的成员
存值:ZADD key score1 member1 [score2 member2] (向有序集合添加一个或多个成员)
取值:ZCARD key (获取有序集合的成员数)
3.两种特殊的数据结构
a.HyperLogLog
HyperLogLog概念:提供不精确的去重计数方案,特点在元素的数量或者体积非常大时,计算基数所需的空间总是固定的(HyperLogLog 键只需要花费 12 KB 内存)
基数概念:现在有一个数据的集合为{1,1,2,3,5,3},这个数据集的基数为{1,2,3,5}
应用场景:1.计算每日访问 IP 数 2.计算页面实时 UV 数
使用:存值:PFADD key element 添加元素到 HyperLogLog 中 取值:PFCOUNT key 计算给定 HyperLogLog 的基数估算值 合并:PFMERGE destkey sourcekey [sourcekey ...] 把多个 HyperLogLog 合并为一个HyperLogLog
b.Bitmaps
Bitmaps本身并不是一种数据结构,而是字符串,特点是可以对字符串的位进行操作
使用场景:1.统计网站用户的最长连续登录天数 2.统计活跃用户 3.用户在线状态
使用:存值:bitset key offset value (注意:value只能为0或1) 取值:getbit key offset 计数:bitcount key [start] [end] 统计value为 1 的个数
4.发布订阅
盗个图先
先解释一下发布订阅是一种通信模式,不是redis首创的这种理念在很多的技术中都有使用,例如node
发布订阅这种消息通信模式有两个主体:1.消息发送者 2.消息接收者(如上图所示)
使用:
a.创建订阅频道
SUBSCRIBE Chat
b.在Chat频道上发布消息
PUBLISH Chat 消息
5.事务
事务这个概念不算新颖,在关系型数据库中就存在事务的概念。
在redis中事务的特点是:某一个命令的执行失败不影响其余命令的继续执行
MULTI :标记事务的开始 EXEC:执行事务中的命令 DISCARD :取消事务 UNWATCH :取消所有 key 的监控
WATCH key :监控某一个key, 如果事务执行之前这个key 有修改,事务就会被打断。
6.管道
管道这个词也不陌生,例如Linux中,简单说下为什么redis中用到了管道的概念。
redis是基于C/S(客户端/服务端)的,工作时客户端发送请求,服务端来响应请求。
那么在redis中运用管道的优势:提高了服务性能
7.数据备份与恢复
我们知道redis的数据都是在内存中的,这也是为什么redis性能这么高的原因,但是内存中的数据一旦我们关机就没有了,那么如果我们想要把内存中的数据保存下来以便下次使用,这就涉及到redis数据备份功能了,使用起来很简单。
使用
save复制代码
这个命令执行之后我们可以在安装目录下看到多了一个dump.rdb文件我们使用的数据就保存在这个文件中
我们已经保存好了数据那么如何使用我们保存的数据
更简单了直接将dump.rdb文件放到我们要使用的目录下面重启服务就好了
如果不知道redis安装目录可以使用 CONFIG GET dir来查看安装的目录)