Redis学习(一)

目录

概述

Redis是什么?

Redis能干嘛?

Redis的特性

Redis的安装

Windows下安装

Linux下安装

Redis的数据类型

五大基本数据类型

三种特殊数据类型

Redis事务

Redis事务概述

正常执行事务

放弃事务

编译型异常(代码有问题!命令有错),所有的事务都不会被执行!

运行时异常(1/0) ,如果事务队列中存在语法错误,那么执行命令的时候,其他命令是可以正常执行的,错误命令抛出异常

监控!Watch


概述

Redis是什么?

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

免费开源!是当下最热门的NoSQL技术之一!也被人们称为结构化数据库。

Redis能干嘛?

  1. 内存存储、持久化。内存是断电即失,所以说持久化很重要(rdb,aof)
  2. 效率高,用于高速缓存
  3. 发布订阅系统
  4. 地图信息分析
  5. 计时器,计数器(浏览量)

Redis的特性

  1. 多样的数据类型

  2. 持久化

  3. 集群

  4. 事务

Redis的安装

Windows下安装

  1. 下载安装包

  2. 下载完毕得到压缩包

  3. 解压到自己电脑上的环境目录下。

  4. 开启redis,双击运行服务即可

Linux下安装

  1. 下载安装包

  2. 解压Redis的安装包!

  3. 进入解压后的文件,可以看到我们redis的配置文件

  4. 基本的环境安装

    yum install gcc-c++
  5. redis的默认安装路径:/usr/local/bin

  6. 将redis的配置文件,复制到我们当前目录下

       7.redis默认不是后台启动的,修改配置文件

        8.启动Redis服务

         9.使用redis-cli进行连接测试

         10.查看redis的进程是否开启

Redis的数据类型

五大基本数据类型

  • String(字符串)
    • 介绍:key-value形式,内部结构是动态字符串。

    • 使用场景:常用在需要计数的场景,比如用户的访问次数、热点文章的点赞转发数量等

  • List(列表)
    • 介绍:是一种双端双向链表。

    • 使用场景:发布与订阅、消息队列。

  • Hash(哈希)
    • 介绍:类似于HashMap,存储的是key-field-value形式。

    • 使用场景:系统中对象数据的存储。

  • Set(集合)
    • 介绍:存放没有重复值的无序集合。

    • 使用场景:需要存放的数据不能重复,例如:统计哪些用户的访问。

  • Zset(有序集合)
    • 介绍:和 set 相比,sorted set增加了一个权重参数score,使得集合中的元素能够按score进行有序排列。

    • 使用场景:需要对数据根据某个权重进行排序的场景,例如:直播间的礼物排行榜。

三种特殊数据类型

  • Geospatial

  • Hyperloglog

  • Bitmap

Redis事务

Redis事务概述

Redis事务本质:一组命令的集合!一个事务中的所有命令都会被序列化,在事务执行过程中,会按照顺序执行!

Redis会一次性、顺序性、排他性的执行一系列的命令 ,Redis事务没有隔离级别的概念。所有的命令在事务中,并没有直接被执行!只有发起执行命令的时候才会执行!

Redis单条命令是保证原子性的,但是事务不保证原子性!

Redis事务执行流程

  • 开启事务(muti)

  • 命令入队(....)

  • 执行事务(exec)

正常执行事务

127.0.0.1:6379> multi			#开启事务
OK
#命令入队
127.0.0.1:6379> set k1 v1
QUEUED
127.0.0.1:6379> set k2 v2
QUEUED
127.0.0.1:6379> get k2
QUEUED
127.0.0.1:6379> set k3 v3
QUEUED
127.0.0.1:6379> exec			#执行事务
1) OK
2) OK
3) "v2"
4) OK

放弃事务

127.0.0.1:6379> multi		#开启事务
OK
127.0.0.1:6379> set k1 v1
QUEUED
127.0.0.1:6379> set k4 v4 
QUEUED
127.0.0.1:6379> discard		#取消事务
OK
127.0.0.1:6379> get k4		#事务队列中的命令都不会被执行
(nil)
127.0.0.1:6379> 

编译型异常(代码有问题!命令有错),所有的事务都不会被执行!


127.0.0.1:6379> multi
OK
127.0.0.1:6379> set k1 v1
QUEUED
127.0.0.1:6379> set k2 v2
QUEUED
127.0.0.1:6379> set k3 v3
QUEUED
127.0.0.1:6379> getset k3		#错误的命令
(error) ERR wrong number of arguments for 'getset' command
127.0.0.1:6379> set k4 v4
QUEUED
127.0.0.1:6379> set k5 v5
QUEUED
127.0.0.1:6379> exec		#执行事务报错
(error) EXECABORT Transaction discarded because of previous errors.
127.0.0.1:6379> get k5		#所有的命令都不会被执行
(nil)
127.0.0.1:6379> 

运行时异常(1/0) ,如果事务队列中存在语法错误,那么执行命令的时候,其他命令是可以正常执行的,错误命令抛出异常

127.0.0.1:6379> set k1 "v1"
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> incr k1			#会执行的时候失败
QUEUED
127.0.0.1:6379> set k2 v2
QUEUED
127.0.0.1:6379> set k3 v3
QUEUED
127.0.0.1:6379> get k3
QUEUED
127.0.0.1:6379> exec
1) (error) ERR value is not an integer or out of range		#虽然第一条命令报错了,但是事务依旧正常执行成功了
2) OK
3) OK
4) "v3"
127.0.0.1:6379> get k2
"v2"
127.0.0.1:6379> get k3
"v3"
127.0.0.1:6379> 

监控!Watch

127.0.0.1:6379> set money 100
OK
127.0.0.1:6379> set out 0
OK
127.0.0.1:6379> watch money 		#监视money对象
OK
127.0.0.1:6379> multi		#事务正常结束,数据期间没有发生变动,这个时候时候就正常执行成功
OK
127.0.0.1:6379> decrby money 20
QUEUED
127.0.0.1:6379> incrby out 20
QUEUED
127.0.0.1:6379> exec
1) (integer) 80
2) (integer) 20
127.0.0.1:6379>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昭烈的进阶之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值