首页 > 数据库 >Redis数据类型

Redis数据类型

时间:2024-01-20 21:44:11浏览次数:38  
标签:set name 0.1 数据类型 Redis 6379 127.0

title: Redis数据类型
date: 2024-01-20 17:01:46
permalink: /pages/73a3c3/
categories:
  - 中间件
  - Redis
tags:
  - 

Redis数据类型

Redis 作为 K-V 类型的缓存中间件,其 value 一共有5中数据类型。 string, set, list, sorted-set(zset), hash.

数据类型查看方式

可以通过 type 命令查看对应value的类型,例如: type key, 输出结果即为上面的类型中的一种。

hset stu name zhangsan
type stu
==> hash

可以通过 object encoding 来查看value的编码方式。

object encoding stu
==> listpack

String

string是最常用的数据结构, 也是可以用最高的一种数据结构。set name lisi,或者批量操作mset, 即标识存储了一个key为name, 值为 lisi 的键值对, 与我们java中常用的map结构有点类似

# set key value [EX seconds|PX milliseconds] [NX|XX] [KEEPTTL]
set name lisi
type name
==> string
object coding name
==> embstr # 在字节长度小于44个字节时,其编码方式为 embstr, 当大于时则为 raw
  • EX 表示多少秒后过期,等同命令: SETEX
  • PX 表示多少毫秒后过期,等同命令:PSETEX
  • NX 只新增,没有时则设置
  • XX 只修改,存在时才设置

bitmap类型

bitmap也属于string类型的操作,可以通过 setbit(设置bit位为1), bitcount(统计1的数量), bitpos(定位查找), bitop(与或非操作) 等对值做一些二进制操作,在设置时,是按照从左右到的字节数去设置的。

127.0.0.1:6379> setbit bt 0 1
(integer) 0
127.0.0.1:6379> setbit bt 1 1
(integer) 0
127.0.0.1:6379> setbit bt 11 1
(integer) 0
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> get bt
"\xc0\x1

输出结果解析成二进制就是 1100 0000 0001 0000, 也就是说 setbit 的 offset 表示的是从左往右的偏移量, 忘掉 我们的所谓的大端小端问题

list

list是一个双向链表结构, 在其 key 中会存储相关的 headtail 节点,因此我们可以看见他的list操作命令会有 leftright的区分,他们的效率是一样的, 也正是因为这个数据结构,我们可以拿 list 作为 队列或者栈的实现。

set

无序集合, 类似与java中的 HashSet

  • sinter<store>交集,加上 store 则表示将结果放入新的集合中。
  • sunion<store>并集,加上 store 则表示将结果放入新的集合中。
  • srandmenber key count 表示取N个随机元素,如果count为负数,表示可以重复取,整数表示不能重复

zset

有序集合, zadd k score member, 会按照 score 值排序,且不允许重复的成员。内部通过跳跃表实现高效搜索排序(logN)

hash

hash结构的值类似与java中的hashmap, 可以用来表述java中的对象,例如: hset num101 name 张三 age 18 sex 1, 通过 hgetall num101 即可查看全部的成员属性了。

标签:set,name,0.1,数据类型,Redis,6379,127.0
From: https://www.cnblogs.com/dxpbaby/p/17977184

相关文章

  • Redis之Lua脚本讲解
    目录1Lua1.1简介1.1.1注释1.1.2变量1.1.3数据类型1.1.4控制结构1.1.5函数1.1.6模块1.1.7字符串操作1.1.8错误处理1.1.9标准库1.2Redis和Lua脚本结合优点1.3Lua脚本应用和调试1.3.1缓存更新1.3.2原子操作1.3.3数据处理1.3.4分布式锁1.3.5Redis中调试Lua1.4Lua脚......
  • C#的数据类型总结:decimal ,double,float的区别
    原文链接:https://www.cnblogs.com/mrbug/p/6904039.htmldouble虽然64位,但其精度低,故其可以表示的范围大decimal虽然是128位,但由于其用了较多的位来表示其精度,只好牺牲表示范围了.1>三者是精度不同的浮点数,如下图参见:https://docs.microsoft.com/zh-cn/dotnet/articles/c......
  • redis漏洞修复-使用redis普通用户启动redis服务程序(禁止root用户权限)
    2.Redis服务以root权限运行应用:Redis危险程度:高危风险描述:Redis服务以root权限运行,攻击者可通过Redis对服务器文件进行任意操作或者执行命令。通过查询命令获取敏感信息,通过写入公钥信息获取ssh登录权限等。如果Redis为root权限,攻击者则无需提权直接对服务器进行操作。验证信息......
  • Redis篇-redis使用场景-缓存-缓存击穿-03
    1缓存击穿缓存击穿:给某一个key设置了过期时间,当key过期的时候,恰好这时间点对这个key有大量的并发请求过来,这些并发的请求可能会瞬间把DB压垮。1.1解决方案一:互斥锁1.2解决方案二:逻辑过期总结:缓存击穿:给某一个key设置了过期时间,当key过期的时候,恰好这时间点对这个key有......
  • 这才是你应该了解的Redis数据结构!
    深入了解Redis数据结构Redis,作为一种高性能的内存数据库,支持多种数据结构,从简单的字符串到复杂的哈希表。在这篇博文中,我们将深入探讨Redis的一些主要数据结构,并通过详细的例子展示它们的使用。1.字符串(String)1.1存储和获取Redis中的字符串是二进制安全的,可以存储任何数......
  • Redis篇-redis使用场景-缓存-缓存穿透-02
    问题一:项目中哪些场景使用了redis呢?1缓存穿透缓存穿透:查询一个不存在的数据,mysql查询不到数据也不会直接写入缓存,就会导致每次请求都查数据库。1.1解决方案一方案一:缓存空数据,查询返回的数据为空,仍把这个空结果进行缓存;{key:1,value:null}优点:简单;缺点:消耗内存,可能会发......
  • openEuler欧拉部署Redis
    一、系统优化关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld关闭selinuxsed-ri's/SELINUX=enforcing/SELINUX=disabled/'/etc/selinux/configsetenforce0二、安装Redisdnf-yinstallredisvim/etc/redis.conf#bind127.0.0.1bind0.0.0.0protected-mo......
  • redis实战 pdf 下载
    《redis实战》深入浅出地介绍了Redis的5种数据类型,并通过多个实用示例展示了Redis的用法。除此之外,书中还讲述了Redis的优化方法以及扩展方法,是一本对于学习和使用Redis来说不可多得的参考书籍。《redis实战》一共由三个部分组成。部分对Redis进行了介绍,说明了Redis的基本使用......
  • Redis篇-redis开篇-01
     注:红色列举出来的为重点部分。即缓存、分布式锁、集群。 原视频链接:https://www.bilibili.com/video/BV1yT411H7YK/?share_source=copy_web&vd_source=a11a8239173c7ecc0df19a35b38b8679......
  • 再见了RDM,Redis官方GUI才是最好的!
    1简介直观高效的RedisGUI管理工具,它可以对Redis的内存、连接数、命中率以及正常运行时间进行监控,并且可以在界面上使用CLI和连接的Redis进行交互(RedisInsight内置对Redis模块支持),官方下载地址。使用Redis或RedisStack进行开发时,将您的生产力提升到一个新的水......