阿里云线上环境操作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)。

五大数据类型(其余的api到中文官网看)

String(字符串)

基本介绍

  String可以说非常常见,程序员接触redis最先用到的应该就是String类型,使用该类型作为缓存。需要注意的是String类型的Value值可以是数字。常见使用场景是计数器,对象缓存等

命令实践

在这里插入图片描述
在这里插入图片描述

使用incr与decr命令实现自增与自减,实际场景用做浏览量等
在这里插入图片描述
在这里插入图片描述

字符串范围 range
在这里插入图片描述
替换,这里替换需要需要规则。
在这里插入图片描述

setex(set with expire) 设置过期时间
setnx(set if not exist) 不存在再设置(在分布式锁中会经常使用!)
在这里插入图片描述
批量创建key-value,批量获取key-value
在这里插入图片描述

在这里插入图片描述

重点
设置一个对象:set user:1 {name:zhangsan,age:3},设置一个user:1对象,值为json字符串来保存一个对象。
这里的设计是user:{id}:{filed},这样的设计在redis中是完全ok的了
在这里插入图片描述

先get后set 组合命令,可以用于更新操作
在这里插入图片描述

List(列表)

基本介绍

  1. 它实际是一个链表,before–Node–after
  2. 如果key不存在,创建新的链表;如果key存在,新增内容
  3. 如果移除了所有值,链表变空了,也代表不存在
  4. 在两边插入或修改值效率最高,中间元素,相对会低一点(LinkedList头插与尾插效率更高)
  5. 可以实现消息排队!消息队列 lpush rpop lpush rpop
  6. 在redis里面,list可以实现为栈,队列,阻塞队列
  7. 在String命令基础上,所有的list命令都以L开头代表list

命令实践

插入
在这里插入图片描述

在这里插入图片描述

移除元素 lpop,rpop
在这里插入图片描述

通过下标取值,第一个下标是0
在这里插入图片描述

查看list的长度 llen
在这里插入图片描述

移除指定的值,取关
在这里插入图片描述

String中有个trim方法,redis中有个ltrim命令可以实现截断
在这里插入图片描述

rpoplpush
在这里插入图片描述

lset {key} {index} {value},给list的某个索引位置设置值,替换值,是一个更新的操作。如果当前所以不存在就会失败
在这里插入图片描述

linsert,通过before/after来控制插入的位置
在这里插入图片描述

Set

基本介绍

  1. set的值是无序不重复
  2. 在String命令基础上,所有的命令都以s开头代表set

命令实践

添加元素,查询元素,判断元素是否存在
在这里插入图片描述

获取集合中的某个元素,移除set集合中的指定元素
在这里插入图片描述

srandmexx 获取一个随机值
在这里插入图片描述

随机移除一个key:spop
在这里插入图片描述

将一个指定的值移动到另一个集合
在这里插入图片描述

  • 差集:sdiff
  • 交集:sinter
  • 并集:sunion

脉脉,微博,微信等的共同关注,二度人脉等可以通过交并补来实现!
在这里插入图片描述

Hash

基本介绍

hash适合存储对象,经常变动的信息。String适合存储字符串即json 。redis的类型指的是后面的value。也就是说hash类型就是Map集合,它的value就是一个键值对相当于key:map。key本质和String类型没有太大区别,还是一个简单的String。

命令实践

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Zset

基本介绍

  • zset是在set的基础上多了一个score,类似于排序的东西
  • 在String命令基础上,所有的list命令都以z开头代表zet

命令实践

添加一个元素,添加多个元素
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

使用场景:set排序 存储班级成绩表,工资表排序!

三种特殊类型

geospatial

基本介绍

geo底层实现原理是Zset,可以使用Zset命令来操作geo
在这里插入图片描述

命令实践

geoadd

  • 作用:添加地理位置
  • 规则:经度是有范围的,两极是无法直接添加(具体范围官网有),一般是程序一次性写入
  • 当坐标超出命令时,会报错

在这里插入图片描述

geopos:获得坐标值,可以取多个也可以取一个

在这里插入图片描述

geodist:查看两点之间的距离,有一点不存在就会有问题,可以指定单位,具体看官网

在这里插入图片描述

georadius: 以给定的经纬度为中心,找出指定半径内的元素(必须在key中)

在这里插入图片描述

georadiusbymember: 查询指定元素周围元素(类似于附近场馆)

在这里插入图片描述

geohash:返回一个或多个元素的geohash表示,该命令返回11位

在这里插入图片描述

hyperloglog

基础知识

基数指的是不重复的元素,比如a集合是1,2,3,b几个是1,2.那么基数就是2,官方明确说明这里有误差,但是误差是可以接受的

简介

Redis2.8.9就有Hyperloglog这个数据结构,它是一种基数统计的算法。优点在于它占用的内存是固定的,2的64次方个元素,只需要12k的内存!相比于使用set(元素是唯一的)来实现一些功能,从内存角度,它是首选!

实际场景

网页的UV统计(一个人访问多次,也只算一次):

  • 传统方式:set保存用户的id,然后统计set中的元素数量即可。这个方式耗内存太大,我们的问题是要计数,不是存放数据。
  • redis:有0.81%的容错率,是可以接受的。

命令练习截图

在这里插入图片描述

bitmap

基础知识

Bitmaps是位图,是一种数据结构!都是操作二进制位来进行记录,就只有0跟1两个状态!!
应用场景:统计用户信息,活跃,不活跃!登录,未登录!打卡,未打卡!两个状态的,都可以使用Bitmaps!

命令练习截图

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jayden 

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

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

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

打赏作者

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

抵扣说明:

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

余额充值