Redis从入门到精通(四):Redis常用数据结构以及指令

本文主要介绍了Redis的常用数据结构,包括String、List、Hash、Set和Sorted Set,并详细讲解了相关指令,如exists、del、type、ttl等。在String结构中,讨论了自增操作和设置过期时间。对于List,列出了如lrange、llen等操作。Hash结构允许存储多个field-value对,而Set用于存储唯一元素。Sorted Set提供了有序的集合操作。最后,文章提到了Redis的部署和常用操作,帮助读者从入门到精通。

目录:
Redis从入门到精通(一):缓存
Redis从入门到精通(二):分布式锁以及缓存相关问题
Redis从入门到精通(三):Redis持久化算法以及内存淘汰策略
Redis从入门到精通(四):Redis常用数据结构以及指令
Redis从入门到精通(五):Redis6整合SpringBoot2.x+Mybatis+SpringCache
Redis从入门到精通(六):Redis高可用原理
Redis从入门到精通(七):跳跃表的简介与实现
Redis从入门到精通(八):Redis新特性

Redis部署

  1. 买服务器。大三的时候买了一年阿里云服务器,所以阿里的优惠已经不对我开放了,于是我这次买的是腾讯云,CentOS7.6,反正第一次都有优惠,所以你们看哪个便宜买哪个就行。

  2. 安装必要插件:

    yum install -y gcc-c++ autoconf automake

    查看自己安装的版本,如果版本低于5.3,需要更新。

    gcc -v
    yum -y install centos-release-scl
    yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binunits
    scl enable devtoolset-9 bash
    echo “source /opt/rh/devtoolset-9/enable” >> /etc/profile

  3. 安装redis。

    wget http://download.redis.io/releases/redis-6.2.3.tar.gz
    tar xzf redis-6.2.3.tar.gz
    cd redis-6.2.3
    make
    cd src
    ./redis-server …/redis.conf

    会出现如下图形
    在这里插入图片描述

    mkdir -p /usr/local/redis
    make PREFIX=/usr/local/redis install

    会出现
    在这里插入图片描述
    进入/usr/local/redis/bin目录下,会有如下文件:
    在这里插入图片描述
    名字都很熟悉,现在主要是redis-cli(客户端)和redis-server(服务端)。
    我们在最初已经开启了redis-server,为了更方便的演示,我们现在kill掉所有的redis进程,重新开始服务部署。

    ps aux | grep “redis”
    kill -9 进程号
    ./redis-server
    新开启一个session,进入同样目录
    ./redis-cli

    在这里插入图片描述
    开启成功。

常用数据结构以及指令

啥是Redis常用的数据结构?

就是说,在内存中,存放的数据总得用一个数据结构来承接,这个数据结构就是Redis支持的结构。而在redis中,支持多种数据结构。

但是有些指令是通用的,即不管是哪个数据结构都可以使用这些指令,这些指令有:

  • exists:判断key是否存在
  • del:删除key
  • type:判断key类型
  • ttl:查看可key存活时间

String

这是最简单也是最基本的一种结构,两个string类型的变量组成的键值对key-value,存储在redis中。
在这里插入图片描述
key甚至可以加上平时编程时不允许加的符号,例如:
在这里插入图片描述
我们也可以设置value自动填充。比如我们csdn这个网站的文章都有阅读量的标签,每次点击,阅读量都会加一,我们不用每次先查询文章原有阅读量,两次查询势必会使得响应速度减慢。因此们有incr命令可以让value自增:
在这里插入图片描述
可以看到,string类型也变成了int。

当我们将value设置成不可转换为int类型的字符串时,会报错。
在这里插入图片描述
当然也可以一次加好多数,利用incrby命令:
在这里插入图片描述

在许多情况下,我们需要给存入的内容设置过期时间,从而可以帮助redis清缓存,使得内存不会太慢。这时候,我么就用到了命令:setex key expiretime value。当过期时,返回空值。
在这里插入图片描述
编程的时候,尤其是C语言,有一个宏定义是
ifndef
,在redis中,我们想要实现同样的功能,需要用到命令setnx key value,当有key时,舍弃新的value,当没有key时,设置key。
在这里插入图片描述
还有一种我不常用的,就是getset命令,在设置新值的时候,返回旧值:
在这里插入图片描述
(我老是打错,忽略。也好,可以查看输错的时候各种命令返回的结果)

更多命令去看官网吧,平时这些命令够用了。

list

list命令比较多,我们一点一点来说。其中下面的命令,[ r ]的意思是right,可以与 l 替换。

  1. lpush key value1 [value2 ...]
    在这里插入图片描述
  2. lrange key 0 -1 列出key所有的元素;lrange key 0 0列出从0开始第0号元素;lrange key 0 2列出0开始的两个元素;lindex key 2列出第三号元素。
    在这里插入图片描述
  3. lpop key弹出第一个元素
  4. llen key查看key的元素个数
  5. brpop key移除并返回最后一个元素,当无元素时该方法阻塞,有元素到来再移除。
  6. lrem key count value移除count个在key中的value。

Hash

之前我不是很明白,既然有了String,干嘛还用hash呢,毕竟实际存储在redis里面的还是hash值。如此的话,hash和string类型对于redis有什么区别呢?

实际上,我们存储的是类似于json串的一个结构,一个key是由许多个field和value组成的。

在这里插入图片描述

  1. hset key field value
    在这里插入图片描述
    就这么几个单词,打错了一堆,不要在意这些细节。
  2. hgetall key
    在这里插入图片描述
  3. hdel key field
    在这里插入图片描述
  4. hexists key field
    在这里插入图片描述
  5. hincrby key field number
    在这里插入图片描述

Set

C语言中,set集合用来保存唯一的数据。加入set集合先后进来两个相同的数据,将会把新数据替换掉以前的数据。redis的set也是同样的道理。

  1. sadd key value 添加元素
    在这里插入图片描述

  2. scard key 查看key中有多少value
    在这里插入图片描述

  3. sdiff key1 key2查看两个集合的差集。返回的是集合1中的元素。
    在这里插入图片描述
    抖音中不是有“可能认识的人”功能么?我们有200个好友,就我俩不认识,你说为啥不认识。。。。或者有人工智能基础的小伙伴也可以联想到协同过滤的原理,这里就不提了。

  4. sinter key1 key2 返回交集。
    在这里插入图片描述

  5. sismember key member 判断member是否是key中的成员
    在这里插入图片描述

  6. srem key member 移除key中的member,如果member不在key中,忽略。

  7. sunion key1 key2 拿到key1和key2的并集,就是key1和key2中所有的元素。
    在这里插入图片描述

  8. smembers key返回某一个key的全部元素。
    在这里插入图片描述

Sorted Set

很清楚了,就是排序的Set。

可以用来对每天的出货量进行排序,也可以用来做比赛的排名等。

Sorted Set底层使用ZipList压缩列表和跳跃表组成的,我们在第七节实现一下该结构。

  1. zadd key number value zcard key
    在这里插入图片描述

  2. zrange key from to 返回from到to区间内的商品,排序后的。也可以加上分数:zrange key from to withscores
    在这里插入图片描述
    在这里插入图片描述

  3. zincrby key member value增加数量。
    在这里插入图片描述

  4. zrevrange key from to从大到小排序。

  5. zrank key value得到从小到大排序,value的次序,0是第一名。zrevrank key value自然是从大到小。
    在这里插入图片描述

  6. zrem key value移除元素

  7. zscore key value 查看某一个元素得数量。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值