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

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 ...
posted @   鱼仔_yuzai  阅读(241)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示