Redis 学习 —— 五种基本类型的简介及使用

Redis 后端运行

正常情况下,通过

redis-server redis.conf

运行 Redis 是这样的:
在这里插入图片描述
控制台被占领了,不能操作了;可以通过修改配置 redis.conf 配置文件,使得 Redis 在后端运行:
在这里插入图片描述
在这里插入图片描述

基本类型一 String

String 是 Reis 里最简单的数据结构。在 Redis 中,五种数据类型的 key 全部都是字符串,因 value 不同而类型不同
Redis 中的字符串都是动态字符串。内部都是可以修改的,像 Java 中的 StringBuffer。它采用分配冗余空间的方式来减少内存的频繁分配。在 Redis 内部结构中,实际分配内存要大于需要的内存,当字符串小于 1M 时,都在现有空间上加倍;如果超过 1M,每次扩容 1M ,最大 512 M。下面时常用命令

  • append
    使用 append 命令时,如果 key 已经存在,则直接在对应的 value 后追加值。否则创建新的键值对
    在这里插入图片描述
  • decr
    可以实现对 value 的减 1 操作,前提时 value 时一个数字,否则报错。如果 value 不存在,则会给一个默认值 0 ,在默认值的基础上减 1
    在这里插入图片描述
  • decrby
    设置减法的固定步长,命令的第二个参数是步长
    在这里插入图片描述
  • get
    用来获取一个 key 的 value,截图略
  • getrange
    可以用来返回 key 对应的子串,有点像 Java 中的 substring,第二个、第三个参数代表起止位置
    在这里插入图片描述
  • getset
    获取并更新某一个 key
    在这里插入图片描述
  • incr
    可以实现 value 的自增,默认增 1
    在这里插入图片描述
  • incrby
    自增可以设置步长
    在这里插入图片描述
  • incrbyfloat
    和 incrby 类似,但是自增的步长可以设置为浮点数
    在这里插入图片描述
  • mget 和 mset
    批量的获取和批量设置
    在这里插入图片描述
  • setex
    给 key 设置 value ,同时设置过期时间。
    在这里插入图片描述
  • psetex
    与 setex 类型,不过设置有效期时间单位是毫秒
    在这里插入图片描述
    -setnx
    如果 key 存在,不会覆盖,不存在才 set 成功
    在这里插入图片描述
  • msetnx
    批量的 setnx 操作,如果有一个失败,所有的都会失败
    在这里插入图片描述
  • setrange
    从指定下标开始覆盖字符串
    在这里插入图片描述
  • strlen
    查看字符串的长度
    在这里插入图片描述

一.一 BIT 命令

在 redis 中,字符串都是以二进制方式来存储的,例如 执行

set k1 a

后,a 的 ASCII 码是 97,97 转为二进制是 01100001,BIT 命令就是对二进制进行操作的

  • getbit
    key对应的 value,在 offset 处的二进制的值,offset 以 0 开始
    在这里插入图片描述
  • setbit
    修改 key 的 value 在 offset 处的 bit 值
    在这里插入图片描述
  • bitcount
    统计二进制数据中 1 的个数
    在这里插入图片描述
    有一个比较好的案例是用 BIT 来记录用户 peter 的登录次数
    第一次登录
setbit peter 01
setbit peter 1 1
setbit peter 2 1
# 一年
setbit peter 365 1
# 10 年
setbit peter 3650 1

用 bitcount 就可以计算出 peter 的登录次数,且内存占用特别小,因为一天一次登录占 1个 bit,一年 365 个 bit,10 年 3650 bit,8 个 bit 是一个字节,1024个字节是 1kb,那么10 年记录登录次数的内存是 3650/8*1024 = 0.45kb.

  • bitop
    bit的逻辑运算操作,包括与(and)、或(or)、非(not)、异或(xor)等,这里示例略,不常用的到,只举一个的例子:
    在这里插入图片描述

基本类型二 List

  • lpush
    表示 value 值从左到右依次插入表头(我更愿意理解为从左到右的入栈),类似栈的功能
    在这里插入图片描述
  • lrange
    返回列表中指定元素,0 代表第一个,-1 代表最后一个,并且只要 redis 中涉及下标的操作都可以用 0,-1 代表第一个和最后一个
    在这里插入图片描述
  • rpush
    与 lpush 的功能类似,不同的是从表头尾部添加元素(可以认为是从左到右的尾部入栈)。
    在这里插入图片描述
  • rpop
    移除并返回列表的尾元素
    在这里插入图片描述
  • lpop
    返回列表的头部元素
    在这里插入图片描述
  • lindex
    返回列表中下标为 index 的元素
    在这里插入图片描述
  • ltrim
    类似 Java 中 String 类的 sublist,把当前的 list 截取后再次赋给该引用。可以用 -1、-2、-3 等代替倒数第一个下标、倒数第二个下标、倒数第三个下标:
    在这里插入图片描述
  • blpop
    阻塞式弹出,相当于 lpop 的阻塞版。
    同时需要设置阻塞时间,时间内有值弹出,无值阻塞,如果阻塞期间有新值进入,则弹出新值,阻塞结束,并返回阻塞时间
    在这里插入图片描述
    在这里插入图片描述

基本类型三 Set

  • sadd
    添加元素到指定 key 的 value 中
    在这里插入图片描述

  • smembers
    返回指定 key 对应 set 的所有元素
    在这里插入图片描述

  • rem
    删除指定 key 对应 set 中的某个元素
    在这里插入图片描述

  • sismember
    返回一个成员是否在 指定 key 对应的 set 中的判断,0 代表不存在, 1代表存在
    在这里插入图片描述

  • scard
    返回集合的数量
    在这里插入图片描述

  • srandmember
    随机返回一个元素,不会移除,可以设置返回数量,数量大于等于集合的数量,全部返回
    在这里插入图片描述

  • spop
    随机返回并移除一个或多个元素
    在这里插入图片描述
    -smove
    把一个元素从一个集合移动到另一个集合中去
    在这里插入图片描述

  • sdiff
    返回两集合的差集,顺序不同,结果不同,返回第一个集合参数中两者的差集
    在这里插入图片描述

  • sinter
    返回两集合的交集
    在这里插入图片描述

  • sunion
    返回两个 set 集合的并集
    在这里插入图片描述

  • sdiffstore
    类似于 sdiff,不同的是把差集存储到指定的集合中
    在这里插入图片描述
    -sinterstore
    类似于 sinter,不同的是把差集存储到指定的集合中
    在这里插入图片描述

  • sunionstore
    类似于 sunion,不同的是把差集存储到指定的集合中
    在这里插入图片描述

基本类型四 Hash

String 、List 、Set 三种类型中 value 的类型是 String 、List 、Set,是 key - value 类型,而 Hash 类型中 value 也是一个 key - value 类型

  • hset
    添加值,可以添加多个
    在这里插入图片描述

  • hget
    获取值,只能获取一个值
    在这里插入图片描述

  • hmset
    批量设置,Redis 4.0.0,HMSET被视为已弃用。请在新代码中使用HSET。

  • hmget
    与 hget 类似,不同的是可以批量的获取值
    在这里插入图片描述

  • hdel
    删除一个或多个指定 feild
    在这里插入图片描述

  • hsetnx
    默认情况下使用 hset,如果与 value 中的feild 相同,会覆盖已有的 value 中的值,hsetnx 则不会
    在这里插入图片描述

  • hvals
    获取 value 的所有属性
    在这里插入图片描述

  • hkeys
    获取 Hash 结构中所有的 key
    在这里插入图片描述

  • hgetall

  • 同时获取所有的 key 和 value
    在这里插入图片描述

  • hexists
    判断某个属性是否存在与指定的 key 对应 value 中的属性,存在返回 1,不存在返回 0;
    在这里插入图片描述

  • hincrby
    给指定的 key 对应的 value 中的数值属性自增
    在这里插入图片描述

  • hincrbyfloat
    给指定的 key 对应的 value 中的数值属性自增(浮点数)
    在这里插入图片描述

  • hlen
    给指定的 key 对应的 value 中的属性的个数
    在这里插入图片描述

  • hstrlen
    给指定的 key 对应的 value 中的字符串属性的长度
    在这里插入图片描述

基本类型五 ZSet

  • zadd
    将指定元素添加到有序集合中,需要指定每个元素的分数,分数越小,排名越靠前
    在这里插入图片描述

  • zrange
    按下标返回集合中的一组元素
    在这里插入图片描述

  • zscore
    返回 member 的 score 值
    在这里插入图片描述

  • zrevrange
    按下标返回集合中的一组元素,但是是倒序
    在这里插入图片描述

  • zcard
    返回元素的数量
    在这里插入图片描述

  • zcount
    返回指定 score 区间内,元素的数量
    在这里插入图片描述

  • zrangebyscore
    返回指定 score 区间内的元素
    在这里插入图片描述

  • zrank
    返回元素的下标(正序)
    在这里插入图片描述

  • zrevrank
    返回元素的下标(倒序)
    在这里插入图片描述

  • zincrby
    设置某个元素的 score 值自增
    在这里插入图片描述

  • zrem
    弹出一个指定元素
    在这里插入图片描述

  • zlexcount
    返回指定元素区间内元素个数,闭区间用 [ 前缀(与 zcount 不同,zcount 闭区间不用加前缀即可),开区间用 ( 前缀
    在这里插入图片描述

  • zrangebylex
    按照指定的元素区间返回元素成员
    在这里插入图片描述

key

key 的命令操作,是在五种数据类型都能用的操作

  • del
    删除指定的一个 key - value
    在这里插入图片描述
  • dump
    序列化指定的 key
    在这里插入图片描述
  • exists
    判断指定 key 对应的数据是否存在,存在返回 1,不存在返回 0;
    在这里插入图片描述
  • ttl
    查看 一个 key 的有效期
    在这里插入图片描述
  • exprie
    给一个 key 设置有效期,如果 key 在过期前被重新 set,则过期时间失效
    在这里插入图片描述
    在这里插入图片描述
  • persist
    移除一个 key 的过期时间
    在这里插入图片描述
  • keys *
    查看所有的 key
    在这里插入图片描述
  • pttl
    功能和 ttl 一样,查看过期时间,不同的是返回的是毫秒
    在这里插入图片描述

补充

  • 在 redis 中,容器的四种类型(List、Set、Hash、ZSet),在第一次使用,如果容器不存在,就自动创建一个;如果容器里边没有元素了,那么立即删除容器,释放内存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值