首页 > 数据库 >redis常见的5中数据类型以及相关命令

redis常见的5中数据类型以及相关命令

时间:2023-07-31 09:12:42浏览次数:42  
标签:count ... 删除 数据类型 常见 redis value field key

redis

redis 简介


  • redis 是采用 ASNI C 语言编写的
  • 采用的是 C/S 架构
  • 是非关系型数据库
  • 以键值对的形式存储在内存中

redis 在 windows 中的启动命令

  • redis-server redis.windows.conf
  • redis-cli 切换到客户端

一、redis 的数据类型


1. String(字符串)

最基本的数据结构,可以存储文本、整数或二进制数据。

1.1 设置键值对,根据键获取值

set key value  # 设置键值对
get key # 根据键获取值

1.2 只能设置唯一的键和值

  • setnx key value 不能再设置这个键的值
  • 如果需要重新设置值,就需要先把 key 删除了 del key

分布式锁用的就是 setnx key value
image.png

假如要抢购一个商品,通过使用 setnx 设置唯一的键让这个单线程使用,只有删除了这个键其他线程才能创建使用

当使用 del 删除 key 则使用 setnx key value 就可以创建新的键值对

1.3 设置有效时间

setex key seconds value

1.4 比特流

setbit key offset value # offset从左到右设置一个bit数据的偏移量
getbit key 
bitcount key # 统计字符串被设置为1的数
bitpos # 返回字符串里第一个被设置为1或0的bit位

1.5 字符串数字增加减少

  • incr key 值增加 1
  • decr key 值减少 1
    image.png

1.6 增加减少数量

  • incrby key increament 一次增加的数量
  • decrby key increament 一次减少的数量
    image.png

1.7 获得字符串值的长度

  • strlen key

1.8 字符串拼接

  • append key value
  • 如果需要拼接空格,值用引号
    image.png

2. list(列表)


2.1 增

  • 从列表最左边添加 lpush key value1 value2 ...
  • 总列表最右边添加 rpush key value1 value2 ...
  • lpushx key value1 value2 ...rpushx key value1 value2 ... 只会在已经存在的 key 中插入值
    image.png
  • 在列表指定字段之前插入数据 linsert key before field value
  • 在列表指定字段之后插入数据 linsert key after field value
    image.png

2.2 删

  • 从列表最左边删除 rpop key

  • 从列表最右边删除 rpop key
    image.png

  • 删除指定重复的元素 lrem key count value

    • count为0 删除所有的 value
    • image.png
    • count > 0 count 为几则从表的左边往右删除几个重复的 value
    • image.png
  • count < 0 count 为负几则从表的右边往左删除几个重复的 value

2.3 查

  • 查询列列表长度 len key
    • image.png
  • 根据索引获取值 lindex key 索引

2.4 改

  • 指定索引修改值 lset key index
    image.png

2.5 设置列表上限

ltrim key start stop 设置范围,将范围之外的旧内容删除
image.png

2.6 阻塞命令

  • blpop key [key...] timeout 从列表头部删除并返回一个元素,如果列表为空,则该命令阻塞,直到有元素可用或者达到指定时间为止
  • blmove

3. hash(哈希)


相当于 python 中的字典嵌套了一个字典

dct = {
	key1:value1,
	key2:{
		key3:value3,
		key4:value4
	}
}

3.1 增

  • 新增哈希值 hset key field1 value1 field2 value2 ...
    image.png
  • 增加 key 中哈希的多个键值对:hmset key field1 value1 field2 value2 ...
    image.png

3.2 查

  • 查看字段中一个键的值 hget key field
    image.png
  • 查看 key 中的哈希 field 是否存在:hexists key filed
  • 查看 key 中所有哈希的键值对hgetall key
    image.png
  • 查看 key 中哈希所有的 fieldhkeys key
    image.png
  • 查看 key 中哈希的键值对长度:hlen key
  • 查看 key 中哈希的多个 field 对应的 valuehmget key field1 field2 ...
    image.png

3.3 删

  • 删除一个或多个字段 hdel key field1 field2 ...
    image.png

3.4 设置数字的增加减少

  • 设置 key 中的 field 字段对应的 value 的增加大小:hincrby key field increment
    • value和increment 其中为 increment 正数为一次增加多少,为负数为一次减少多少
      image.png
      image.png
  • 设置小数增加减少多少:hincrby key field increment
    • value和increment 可以设置 float 的增加或减少

3.5 hsetnxn

  • 如果 field 不存在则会创建一个新的 field value,如果 field 已存在则该操作无效
  • hsetnx key field value
  • integer = 1 :表示 field 是新字段并设置了 value
  • integer = 0 :表示 field 已存在或者没有执行任何操作
    image.png

3.6 hstrlen

  • 查看 field 对应的 value 的字符串的长度:hstrlen key field
    image.png

3.7 hvals

  • 查看 key 中所有的 field 对应的 valuehvals key field
    image.png

4. set(集合)

4.1 sadd 增

  • 增加 key 的集合:asdd myset member...
    image.png

4.2 scard 查(count)

  • 查看集合的个数:scard key
    image.png

4.3 sdiff 差集

  • 取多个集合的不同的差集:sdiff key1 key2 ...
  • 也就是 key1 有的值 key2 没有
    image.png

4.4 sdiffstore 差集(存)

  • 将 diff 取到的差集存储起来 sdiffstore destination key1 key2...
  • 取到的差集存储到 destiantion 中,destinnation 自己设置 key,如果已经存在 key 则会之间替代
  • smember key 查看存储的值
    image.png

4.5 sinter 交集

  • 取多个集合的交集:sinter key1 key2 ...
    image.png

4.6 sinterstore 交集(存)

  • 将取到多个集合的交集存储到 destination 中:sinterstore
  • 如果已经存在 key 则会覆盖原有的内容
    image.png

4.7 sismember 判断

  • 判断 key 中是否有 member 这个成员:sismember key member
  • 如果有则返回 1,否则返回 0
    image.png

4.8 smembers 查(all members)

  • 查看 key 中的所有 member 成员:smembers key
    image.png

4.9 smove 移

  • 将集合中的某个元素移动到另一个集合中 smove soure destination member
  • soure 是原来的集合
  • destination 是要移动到的集合
  • member 是要移动的成员元素
    image.png

4.10 spop 删

  • 随机删除一个或多个成员元素:spop key count
    image.png

4.11 srandmember 随机

  • srandmember key count
  • 当没有添加 count 则只会返回一个随机成员元素
  • count 为正数时,返回不同的成员元素。返回的个数是 count
  • count 为负数时,返回的可以是重复的成员元素。返回的个数是 count 的绝对值
    image.png

4.12 srem 删

  • 删除指定的成员元素: srem key member1 member2 ...
    image.png

4.12 sunion 并集

  • 求多个集合的并集 sunion key1 key2 ...
    image.png

5. sorted set(有序集合)

5.1 zadd 增

  • 将新成员和关联分数添加到排序集中,如果该成员已经存在则更新数据:
  • ZADD key score1 member1 [score2 member2...]
    image.png

5.2 zcard (count)

  • 统计 zset 中成员的个数:zcard key
    image.png

5.3 zcount 区间(count)

  • 查看分数区间的成员个数:zcount key min max
  • min max :是分数区间
    image.png

5.3 zincrby (自增 score)

  • 让某个成员元素的分数增加 incrementzincrby key increment member
  • increment: 指的是分数增加多少
    image.png

5.4 zlexcount 指定范围(count)

  • 所有的分数都相同时,指定字典区间内成员的数量
  • zlexcount key min max
    image.png

5.5 zpopmax 删(score max)

  • 删除有序集合中分数最高的成员元素个数:zpopmax key count
    image.png

5.6 zpopmin 删(score min)

  • 删除有序集合中分数最低的成员元素个数:zpopmin key count
    image.png

5.7 获取 score 在指定区间的所有成员

  • score 从低往高排序获取指定 score 区间:zrangebyscore key min max
  • score 从高往低排序获取指定 score 区间:zrerangebyscore key min max
  • score 从低往高排序获取指定索引区间:zrange key start stop
  • score 从高往低排序获取指定索引区间:zrev range key start stop

5.8 zscore

  • 获取指定成员的分数:zscore key member

5.9 zrank

  • 获取指定成员在集合中的排名:
  • zrank key member,从小到大
  • zrevrank key member,从大到小

5.10 zrem 删

  • 删除成员:zrem key member1 member2 ...

标签:count,...,删除,数据类型,常见,redis,value,field,key
From: https://www.cnblogs.com/yuzai-xin/p/17592564.html

相关文章

  • redis做消息队列学习
    转自:https://juejin.cn/post/7094272373930590245#heading-9,https://zhuanlan.zhihu.com/p/3442697371、消息队列基本作用:应用解耦(作为中介)、削峰填谷。redis做mq的优点:轻量级,使用和运维成本低。mq的3个基本要求:消息保序sequence:对应消息需要有序消费的场景;处理重复消息dupl......
  • Java面试题 P17:Redis篇:Redis使用场景-缓存-缓存穿透
    什么是缓存击穿:给某一个key设置了过期时间,当key过期的时候,恰好这时间点对这个key有大量的并发请求过来,这些并发的请求可能会瞬间把数据库压垮。  互斥锁代码:1privatefinalReadWriteLockreadWriteLock=newReentrantReadWriteLock();2privatefinalLock......
  • PX4常见解锁失败报错及解决方法
    文章目录前言一、Killswitchengagen二、电源检查CBRK_SUPPLY_CHK三、USB连接检查CBRK_USB_CHK四、安全开关检查CBRK_IO_SAFETY五、highAccelerometerbios六、highgyrobios七、compasssinconsistent八、GPS报错九、Accelsinconsistent十、偏航角一直漂移十一、PREFLIGHTFA......
  • redis群集模式
    redis群集有三种模式,redis群集有三种模式,分别是主从同步/复制、哨兵模式、Cluster,可以提高redis的高可用,高性能。目录一、redis群集模式二、主从复制三、哨兵四、集群五、总结     一、redis群集模式1.redis群集模式(1)主从复制:主从复制主要实现......
  • 二分查找常见变种方法的代码实现
    二分查找变种:1.查找大于target的所有值的最小索引;2.查找等于target的所有值的最大索引(上界);3.查找大于target的所有值的最大索引; 代码示例:/***二分查找工具对象*/constBinarySearch=(function(){return{/***找出大于target的所有值......
  • 通过Redis+Mysql来自定义Spring-Statemachine的持久化
    我们在使用Spring状态机的时候,往往需要对于StateMachine持久化操作,但是官方为我们提供的基于redis的持久化并不是特别好,一方面是因为只存redis容易导致数据丢失,另一方面因为状态机的特性需要对应的StateMachine的数据永久有效,导致redis中的key永不过期。我现在希望实现将StateMac......
  • Redis
    1.什么是Redis?它主要用来什么的?Redis,英文全称是RemoteDictionaryServer(远程字典服务),是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。与MySQL数据库不同的是,Redis的数据是存在内存中的。它的读写速度非常快,每......
  • 02:SpringBoot2 整合 Redis 详细步骤
    1、pom文件中添加redis引用1<dependency>2<groupId>org.springframework.boot</groupId>3<artifactId>spring-boot-starter-web</artifactId>4</dependency>5<dependency>6......
  • 《Redis 设计与实现》的总结
    17.集群cluster-enabled#是否开启集群模式的选项CLUSTERMEET<ip><port>#告诉当前节点将ip:port节点加入到集群中三个数据结构:clusterNode:clusterNode结构保存了一个节点的当前状态,比如节点的创建时间、节点的名字、节点当前的配置纪元、节点的IP地址和端口号等等。......
  • PHP8的数据类型-PHP8知识详解
    在PHP8中,变量不需要事先声明,赋值即声明。不同的数据类型其实就是所储存数据的不同种类。在PHP8.0、8.1中都有所增加。以下是PHP8的15种数据类型:1、字符串(String):用于存储文本数据,可以使用单引号或双引号来定义字符串。2、整数(Integer):用于存储整数值,可以是正数、负数或零。3、浮点数(F......