专栏首页JavaEEredis学习之redis基本数据类型前言:数据类型详解:

redis学习之redis基本数据类型前言:数据类型详解:

前言:

redis有5种基本数据类型,分别是String(字符串)Hash(字典)List(列表)Set(集合)Zset(有序集合),下面就分别来说一下这五种数据类型。

数据类型详解:

1、String:

二进制安全的数据类型,类似于Java中的Map,以key、value的形式存储数据。它有如下方法: ①、set和get方法:赋值和获取值 语法: set key value get key 例子: set username tom get username

②、del方法:删除指定的key 语法: del key 例子: del username

③、setnx方法:key不存在时进行设置,如果已有这个key就返回0 语法: setnx key value 例子: setnx age 22 如果有age这个key,就返回0,没有就进行设置

④、setex方法:设置有效期 语法: setex key 有效期 value 例子: setex color 10 red 设置color的有效期为10秒,10秒后color为nil

⑤、setrange方法:替换字符串 语法: set key 从第几位开始替换 要替换的字符 例子: set email 12356789@qq.com setrange email 9 gg 把qq替换成gg

⑥、mset和mget方法:一次设置或获取多个值 语法: mset key1 value1 key2 value2 mget key1 key2

⑦、incr和decr方法:对某个值进行递增或递减 语法: incr key decr key

⑧、incrby和decrby方法:可以设置步长的递增和递减 语法: incrby key 步长 decrby key 步长

⑨、append方法:追加字符串 语法: append key 追加的内容

⑩、strlen方法:获取字符串长度 语法: strlen key

2、Hash:

占用内存更少,方便存储对象。它有如下方法: ①、hset和hget方法: 语法: 官方:hset key field value 自己理解:hset hashname key value hget hashname key

②、hmset和hmget:批量操作 语法: hmset hashname key1 value1 key2 value2 hmget hashname key1 key2

③、hincrby和hdecrby:集合递增和递减 语法: hincrby hashname key 步长 hdecrby name key 步长

④、hexists:是否存在key,存在就返回1,不存在返回0 语法: hexists hashname key

⑤、hlen:返回集合中键的个数 语法: hlen hashname

⑥、hdel:删除指定的key 语法: hdel hashname key

⑦、hvals:返回指定hash里的所有value 语法: hvals hashname

⑧、hgetall:返回hash里所有的key、value 语法: hgetall hashname

3、List:

链表结构的集合,既可以做栈也可以做队列,它有如下方法: ①、lpush方法:从头部加入元素(栈),先进后出 语法: lpush key value 例子: lpush list1 "hello" lpush list1 "world"

②、lrange方法:取出list中的元素,从start取到end 语法: lrange key start end 例子: lrange list1 0 -1 表示从头取到尾

③、rpush方法:从尾部加入元素(队列),先进先出 语法: rpush key value 例子: rpush list1 "hello"

④、linsert方法:插入元素 语法: linsert key before value1 insertvalue 例子: linsert list1 before "world" "hello" 表示在world前插入一个hello

⑤、lset方法:将指定下标的元素换掉 语法: lset key 下标 "替换的内容" 例子: lset list1 0 "haha" 表示把索引为0的元素替换成haha

⑥、lrem方法:删除若干个元素,返回删除的个数 语法: lrem key 删除的个数 "删除的元素" 例子: lrem list1 2 "b" 删除两个b

⑦、ltrim方法:保留指定索引范围内的值 语法: ltrim key 索引1 索引2 例子: ltrim list1 2 4 表示保留索引2到4的内容

⑧、lpop方法:从list头部删除元素,并返回删除元素 语法: lpop key

⑨、rpop方法:从list尾部删除元素,并返回删除元素 语法: rpop key

⑩、rpoplpush方法:删除key1中最后一个元素,然后把这个元素加到key2的第一个位置(key1和key2可以相同) 语法: rpoplpush key1 key2

①①、lindex方法:返回list中指定索引的值 语法: lindex key 索引 例子: lindex list1 1 返回list1中第二个元素

①②llen方法:返回list中元素个数 语法: llen key

4、Set:

无序不重复集合,通过hashtable实现。有如下方法: ①、sadd方法:添加元素 语法: 官方:sadd key member 自己理解:sadd setname value 例子: sadd set1 haha

②、srem方法:删除set的元素 语法: srem setname value 例子: srem set1 haha

③、spop方法:指定一个set,随机删除其里面的元素并返回 语法: spop setname 例子: spop set1

④、sdiff方法:返回set1不同于set2的元素 语法: sdiff setname1 setname2

⑤、sdiffstore方法:将set1不同于set2的元素存到set3中去 语法: ```sdiffstore setname1 setname2 setname3``‘

⑥、sinter方法:求set1和set2的交集 语法: sinter setname1 setname2

⑦、sinterstore方法:把set1与set2的交集存到set3中 语法: sinter setname1 setname2 setname3

⑧、sunIon方法:求set1与set2的并集(I是大写的i) 语法: sunIon setname1 setname2

⑨、sunIonstore方法:把set1与set2的并集存入set3 语法: sunIonstore setname1 setname2 setname3

⑩、smove方法:将set1中的某个元素移动到set2中 语法: smove setname1 setname2 value 例子: smove set1 set2 ee 表示将set1中的ee移动到set2中

①①、scard方法:查看set里的元素个数 语法: scard setname

①②、sismember方法:判断某个元素是否为set中元素,是返回1,不是返回0 语法: sismember setname value 例子: sismember set1 haha 判断haha是不是set1中的元素

①③、srandmember方法:随机返回set中count个元素 语法: srandmember setname count 例子: srandmember set1 3 随机返回set1中3个元素

5、Zset:

和set的区别就是,Zset是有序的。它有如下方法: ①、zadd方法:添加元素,如果元素存在,就更新该元素顺序 语法: zadd zsetname score value 例子: zadd zset1 1 haha 表示添加haha这个元素,分数是1

②、zrem方法:删除zset中的元素 语法: zrem zsetname value 例子: zrem zset1 haha

③、zincrby和zdecrby方法:指定步长递增或递减 **语法: ** zincrby zsetname 步长 value zdecrby zsetname 步长 value

④、zrank方法:返回某个元素的排序索引(从小到大排序) 语法: zrank zsetname value 例子: zrank zset1 haha 返回haha在zset1中的序号

⑤、zrevrank方法:返回排序索引(从大到小) 语法: zrevrank zsetname value

⑥、zrangebyscore方法:查找分数在指定区间的数据并返回 语法: zrangebyscore zsetname score1 score2 withscores 例子: zrangebyscore zset1 1 4 withscores 返回分数在1到4之间的数据

⑦、zcard方法:返回zset中元素的个数 语法: zcard zsetname

⑧、zcount方法:返回zset中指定分数区间中元素的个数 语法: zcount zsetname score1 score2

⑧、zremrangebyrank:根据给定的索引区间删除数据 语法: zremrangebyrank zsetname index1 index2

⑨、zremrangebyscore:根据给定的分数区间删除元素 语法: zremrangebyscore zsetname score1 score2

总结:

redis有以上5大数据类型,每个类型都有若干的方法,学习时可以类比Java的集合进行学习。

以上内容属于个人学习笔记整理,如果错误,欢迎批评指正!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 排序算法 --- 插入排序

    把n个待排的元素看成一个有序表和一个无序表,开始时,有序表只包含1个元素,无序表中有n - 1个元素。排序过程中每次从无序表中取出第一个元素,把它的排序码依次与...

    贪挽懒月
  • springboot快速入门前言:一、springboot简介:二、springboot常用知识点:总结:

    正所谓,天下武功,唯快不破,在当今生活节奏越来越快的时代,我们也要讲求效率,也要追求一个快字(不过有些方面还是不能快的,不要当快男哦)。springboot就是...

    贪挽懒月
  • ElasticSearch的安装以及与springboot的集成

    elasticseach简称es,现在用得非常广泛,像百度等一些知名互联网公司都有用到es。那么es到底是什么呢?如何使用呢?下面就一起来学习一下。

    贪挽懒月
  • 【领会要领】web前端-轻量级框架应用(jQuery基础)

    jquery的安装和语法,jquery的多种选择器,dom操作和jquery事件。

    达达前端
  • CSS选择器笔记

    这几天拿出来看了一下,发现很多都忘记了。所以,我决定把它们贴在这里,方便以后查看。这对其他朋友应该也是有用的,毕竟选择器是制作网页效果的第一步。

    ruanyf
  • 使用VSCode 打包你的第一个flutter应用(安卓篇)

    由于官网被墙,打包资料只能根据以往大神提供的经验摸索打包,但是在实际打包中还是会遇到各种各样的错。

    青年码农
  • 视频流媒体服务器测试服务搭建配置JDK环境运行项目日志报Illegal key size错误

    之前我们为大家介绍过我们的视频流媒体服务器EasyNVR在校园幼儿园监控中,作为能力层,为视频直播的服务器搭建提供性能。

    EasyNVR
  • Redis zset 的一些使用

    最近做排行信息的时候用到了 Redis 的 Sorted Set, 写篇文章来和大家分享一波。

    haoming1100
  • 「influxDB 原理与实践(二)」详解influxDB的写入与查询

    RESTful风格的接口,返回JSON格式的响应数据,并支持身份认证、JWT令牌、丰富的HTTP响应代码等。 influxDB API接口及接口的定义描述如下...

    源码之路
  • 下载的js文件本地编辑器打开中文乱码如何解决

    今天遇到的小问题,已解决,直接上图 下载直接打开是这样的 ? 用记事本打开 ?  另存为utf-8格式 ? 正常了! ?

    吴裕超

扫码关注云+社区

领取腾讯云代金券