Redis中数据类型和常用命令(redis数据类型及用法)
mhr18 2024-10-10 06:52 35 浏览 0 评论
- string,字符串类型,最大长度512M,是redis中最常用最基本的数据类型,其本操作如下
set k1 v1
set k2 v2
//可以通过get命令来获取key的值
get k1
get k2
- list, 列表类型,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多可以包含 2的32次方 - 1 个元素 (即4294967295, 超过42亿个元素)。
lpush mylist e1 e2 e3
lpush mylist e4 e5
//可以通过 lrange来取出列表元素
lrange mylist 0 2
- hash,哈希表,是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。Redis 中每个 hash 可以存储 2的32次方 - 1 个键值对(42亿多个)。
hmset mymap name "jack" gender "M" age 18 description "good boy"
//通过 hgetall 可以取出这些对象
hgetall mymap
- set, 集合,是String类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 2的32次方 - 1 (4294967295, 每个集合可存储42多亿个成员)。
sadd myset oracle
sadd myset mysql
sadd myset redis
sadd myset mysql //这个将添加不进去,因为不允许重复
//通过 smembers 命令可以取出key对应的所有list元素
smembers myset
- zset,有序集合,有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 2的32 - 1 (4294967295, 每个集合可存储42多亿个成员)。
zadd myzset 1 oracle
zadd myzset 2 mysql
zadd myzset 3 redis
zadd myzset 4 mysql //这个会把之前的mysql的score给覆盖掉
//取出来
zrange myzset 0 10 withscores //不加 withscore 选项时,不会出现分值
通用型命令
- 切换库命令 select 0 ~ 15, 其中,0表示第一个库,15代表第16个库,默认情况下,redis有16个库。
- 清除当前库命令 flushdb,只清除当前的仓库
- 清除所有库命令 flushall, 清除所有的仓库。
- 查看当前库中key的数量 dbsize
key相关的命令
- keys * 表示查看当前库中所有的key,支持通配,* 通配所有, ? 通配单个字符,如:keys k? 只找出key中以k开头,并且后面只跟0或1个字符的key
- exists key 用来判断这个key在当前库中是否存在,存在返回1,不存在返回0
- move key 0 ~ 15, 用来移动key到指定的仓库,其中,key就是在当前库中已有的key, 0~15代表库的序号。
- expire key second,用来给key指定过期时间,以秒为单位
- ttl key,用来查看key还有多久过期,返回-2表示已过期,-1表示永不过期,正数表示剩下的时间秒。
- type key,用来查看key的类型。
String类型相关的命令
- set和get, 设置和获取key的值
- strlen key, 获取key对应的字符串的长度
- append key value, 在key对应的字符串后面追加value字符串,形成新的字符串
- setrange key offset value, 在key对应的字符串指定位置开始替换成新的value
- getrange key start end, 获取key对应字符串的起始位置到结束位置[含]的子串
- incr和decr, 只针对value是数字型的情况,用来进行自增和自减
- incrby和decrby, 同样只针对value是数字型的情况,指定步长进行自增和自减
- setnx, 是[set if Not eXists]的缩写,表示当key不存在的情况下,才可以设置成功,如果key已存在,则失败
- setex, 相当于是set命令和expire命令组合,不同在于此命令是一个原子[atomic]操作,当key已存在时,会覆盖原来的值。
- mset和mget,可以在一个原子操作中,同时设置多个值,此命令总是返回OK,如果key已存在,则覆盖掉原来的值。 11.msetnx,也是一个原子操作,当且仅当所有给定键都不存在时, 为所有给定键设置值,只要有一个key存在时,都不会设值。
list相关的命令
- lpush,rpush,lrange, 这三个命令是最常用的,分别表示从左边开始入栈【栈顶操作】,从右边开始入栈【栈尾操作】,以及查询出栈中的元素,如下
lpush list01 1 2 3 4 5 //得到的栈是 5 4 3 2 1 【从栈顶进栈,先进后出】
rpush list02 1 2 3 4 5 //得到的栈是 1 2 3 4 5 【从栈尾进栈,先进后出】
lrange list01 0 -1 //取出栈中的所有元素
- lpop,rpop, 这2条命令是出栈命令,其中lpop表示从栈顶取元素,rpop表示从栈尾取元素
- lindex key index, 表示根据下标来获取栈中的元素,如果下标不存在,则返回nil
- lren key, 用来获取指定的列表中元素的长度
- lrem key count value, 用来从列表中移除指定个数的value, 经常用来删除重复的元素
- ltrim key start end, 用来截取列表中的元素,从start开始,到end结束[含],并把返回的元素列表赋给key
- rpoplpush key1 key2, 把key1列表中的栈尾元素取出来放到key2列表中的栈顶中
- lset key index value, 重新设置列表中指定下标位置的元素值
- linsert key before|after value1 value2, 在列表中指定元素value1的前或后面插入新值value2,如果有多个重复的value1,则是参考第一个出现的value1
set[集合]相关的命令
集合是无序的,并且是不重复的。
- sadd key value1 value2 ..., 创建并添加元素到set集合中
- smembers key, 查看set集合中的所有元素
- sismember key value, 查看value是否存在于set集合中,如果存在,返回1,不存在,返回0
- scard key, 获取set集合中的元素个数
- srem key value, 从set集合中把value移除,如果元素不存在,则返回0,移除成功返回1
- srandmember key count, 从set集合中随机取出count个元素【很适合抽奖】
- spop key, 从set集合中随机取出一个元素,如果没有了元素,则这个key也消失【这点同 list】
- smove key1 key2 member, 把member元素从集合1中移动到集合2中,如果member不存在,则返回0
- sdiff key1 key2, 求两个集合的差集,返回集合1中有而集合2中没有的元素
- sinter key1 key2, 求两个集合的交集,返回集合1和集合2中共同都有的元素
- sunion key1 key2,求两个集合的并集,返回集合1和集合2中的元素并集
hash[哈希表]相关的命令
还是键值对存储,不同之处在于它的value也是K-V对, K是不允许重复的
- hset, hmset, hget, hmget, 此4条命令分别是用来给hash设值,多个值一起设,取值,同时取多个值,如下
hset user name jack //把 属性为name,值为jack的K-V对象添加到哈希表中,哈希表的key是user
hget user name //取出user哈希表中的name key的值,结果是 "jack"
hmset customer id 1 name peter phone 13899887766 //给 customer设置了3个key,分别是 id,name,phone
hmget customer id name phone //从customer表中同时取出3个key的值
- hgetall key, 此命令是把key对应的哈希表中的所有K-V对全部取出来。
- hdel key field [field], 删除key对应的哈希表中的K,可以同时删除多个K
- hlen key, 求哈希表的长度
- hexists key field, 判断哈希表中是否存在指定的K,存在返回1,不存在返回0
- hkeys, kvals, 此2个命令类似于java集合MAP API中的keyset()和values()方法,得到所有的key和所有的value
- hincrby key field step, 与string中的incrby类似,用来给哈希表中是整数的key进行增长,step是步长
- hincrbyfloat key field step, 同上面,不同在于此命令可以指定步长为小数
- hsetnx key field value, 中有当key中的field不存在,才能设置成功,如果本来就有field,则返回0
哈希表使用还是比较频繁的,以上命令需要多加练习
zset[有序集合]相关的命令
有序集合是利用score来进行排序的,所以我们在放入数据到zset中时,需要自己指定一个score来与value对应。所以,它的语法是zadd key score1 v1 score2 v2 ...., key是键,score1 和 v1对应一个值。
- zadd, 用来添加元素到有序集合中,如
zadd zset01 10 v1 20 v2 30 v3 40 v4 50 v5 60 v6 70 v7 80 v8 90 v9 100 v10 //添加了10个元素
- zrange key start end [withscores], 用来获取有序集合中的元素,不加withscores选项时,不显示分值,加了此选项,则显示分值
zrange zset01 0 -1 withscores //显示所有元素,含分值
- zrevrange key start end [withscores], 以逆向下标来获取有序集合的元素。
- zrangebyscore key 开始score 结束score, 以分值区间来查询有序集合中的元素,默认是闭区间,使用(可以切换到开区间。也支持 withscores选项,支持 limit 选项【类似于分页】
zrangebyscore zset01 30 60 //把30分至60分的value取出来
zrangebyscore zset01 30 (60 //把30分至60分[不含]的value取出来
zrangebyscore zset01 30 60 withscores //把30分至60分的value取出来,显示结果中含分值
zrangebyscore zset01 30 60 limit 2 3 //从下标为2的位置开始,取出3条记录
- zrevrangebyscore key min_score max_score [withscores],以逆向顺序来返回满足分值条件的结果。
zrevrangebyscore zset01 60 30 //返回 v6 v5 v4 v3
- zrem key value, 从有序集合中移除指定的元素,如果没有此元素,则返回0
- zcard/zcount key [min_score max_score], zcard统计有序集合中元素个数,不支持分数条件,而zcout 是支持分数范围条件的。如:
zcard zset01 //返回zset01中的元素总数
zcount zset01 //结果同上
zcount zset01 30 60 //算出30分至60分之间的元素个数
- zrank key member, 用来获取元素下标
- zrevrank key member,以逆向顺序来获取元素下标,如:
zrank zset01 v1 //返回的是0
zrevrank zset01 v1 //返回的是8
- zscore key member,用来获取元素对应的分值
相关推荐
- SQL入门知识篇(sql入门新手教程视频)
-
一、什么是数据库?什么是SQL?1、数据库:存放数据,可以很多人一起使用2、关系数据库:多张表+各表之间的关系3、一张表需要包含列、列名、行4、主键:一列(或一组列),其值能够唯一区分表中的每个行。5...
- postgresql实现跨库查询-dblink的妙用
-
技术导语:用惯了oracle的dblink,转战postgresql,会一时摸不着头脑。本期就重点详细讲解postgresql如何安装dblink模块及如何使用dblink实现跨库查询。安装cont...
- Oracle VM VirtualBox虚拟机软件(oracle vm virtualbox win10)
-
OracleVMVirtualBox是一款完全免费的虚拟机软件,下载银行有提供下载,软件支持安装windows、linux等多个操作系统,让用户可以在一台设备上实现多个操作系统的操作。同时软件有着...
- 开源 SPL 轻松应对 T+0(开源srs)
-
T+0问题T+0查询是指实时数据查询,数据查询统计时将涉及到最新产生的数据。在数据量不大时,T+0很容易完成,直接基于生产数据库查询就可以了。但是,当数据量积累到一定程度时,在生产库中进行大数据...
- 中小企业佳选正睿ZI1TS4-4536服务器评测
-
随着科技的不断发展,各行各业对于数据使用越加频繁,同时针对服务器的选择方面也就越来越多样化和细分化。那么对于我们用户来说,如何选择符合自身业务需求和最优性价比的产品呢?笔者将通过刚刚购买的这台服务器的...
- MFC转QT:Qt基础知识(mfc和qt的区别)
-
1.Qt框架概述Qt的历史和版本Qt是一个跨平台的C++应用程序开发框架,由挪威公司Trolltech(现为QtCompany)于1991年创建。Qt的发展历程:1991年:Qt项目启动1995年...
- 数据库,QSqlTableModel(数据库有哪些)
-
QMYSQL——mysqlQSQLITE——sqliteQOICQ——orcale所需头文件.pro增加sql#include<QSqlDatabase>#include<Q...
- python通过oledb连接dbf数据库(python连接jdbc)
-
起因:因为工作需要,需要读取dbf文件和系统数据中数据进行校对,因为知道dbf文件可以用sql查询,所以想能不能像mysql/oracle那样连接,再调用执行sql方法,通过一系列百度,尝试,最终通过...
- Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库)
-
在VBA(VisualBasicforApplications)中使用数据库(如Access、SQLServer、MySQL等)具有以下优点,适用于需要高效数据管理和复杂业务逻辑的场景:1....
- Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库-二)
-
以下是常见数据库软件的详细配置步骤,涵盖安装、驱动配置、服务启动及基本设置,确保VBA能够顺利连接:一、MicrosoftAccess适用场景:小型本地数据库,无需独立服务。配置步骤:安装Acces...
- Windows Docker 安装(docker安装windows容器)
-
Docker并非是一个通用的容器工具,它依赖于已存在并运行的Linux内核环境。Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的L...
- Windows下安装Ubuntu虚拟机方法(windows下安装ubuntu20)
-
在Windows下安装Ubuntu虚拟机。选择使OracleVMVirtualBox安装Ubuntu虚拟机。1.下载和安装OracleVMVirtualBox:访问OracleVMVir...
- java入门教程1 - 安装和配置(win和linux)
-
windows安装和配置安装javahttps://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html目前大部分项目的...
- Centos7 安装Tomcat8服务及配置jdk1.8教程
-
1、下载jdk1.8压缩包下载地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.htmltom...
- 全网最完整的免费java教程讲义(一)——java配置和安装
-
一,安装Java1)安装JDK要学习和使用java,首先需要安装JDK(JavaDevelopemntKit),相当于java安装包。Java的下载页在甲骨文官网上:https://www.or...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- SQL入门知识篇(sql入门新手教程视频)
- postgresql实现跨库查询-dblink的妙用
- Oracle VM VirtualBox虚拟机软件(oracle vm virtualbox win10)
- 开源 SPL 轻松应对 T+0(开源srs)
- 中小企业佳选正睿ZI1TS4-4536服务器评测
- MFC转QT:Qt基础知识(mfc和qt的区别)
- 数据库,QSqlTableModel(数据库有哪些)
- python通过oledb连接dbf数据库(python连接jdbc)
- Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库)
- Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库-二)
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)