一、常用数据类型简介:

redis常用五种数据类型:string,hash,list,set,zset(sorted set).

1、String类型

String是最简单的类型,一个key对应一个valueString类型的数据最大1G。
String类型的值可以被视作integer,从而可以让“INCR”命令族操作(incrby、decr、decrby),这种情况下,该integer的值限制在64位有符号数。
在list、set和zset中包含的独立的元素类型都是Redis String类型。

2、List类型

链表类型,主要功能是push、pop、获取一个范围的所有值等。其中的key可以理解为链表的名字。在Redis中,list就是Redis String的列表,按照插入顺序排序。比如使用LPUSH命令在list头插入一个元素,使用RPUSH命令在list的尾插入一个元素。当这两个命令之一作用于一个空的key时,一个新的list就创建出来了。List的最大长度是2^32-1个元素。(2^32 = 4 294 967 296) 42亿啊

3、Set类型

集合,和数学中的集合概念相似。操作中的key理解为集合的名字。在Redis中,set就是Redis String的无序集合,不允许有重复元素。Set的最大元素数是2^32-1。(2^32 = 4 294 967 296) 42亿啊Redis中对set的操作还有交集、并集、差集等。

4、ZSet(Sorted Set)类型

Zset是set的一个升级版本,在set的基础上增加了一个顺序属性,这一属性在添加修改元素时可以指定,每次指定后zset会自动安装指定值重新调整顺序。可以理解为一张表,一列存value,一列存顺序。操作中的key理解为zset的名字。Zset的最大元素数是2^32-1。(2^32 = 4 294 967 296) 42亿啊对于已经有序的zset,仍然可以使用SORT命令,通过指定ASC|DESC参数对其进行排序。

5、hash类型

hash是最接近关系数据库结构的数据类型,可以将数据库一条记录或程序中一个对象转换成hashmap存放在redis中。

二、jedis操作命令:

1、对value操作的命令

exists(key):确认一个key是否存在del(key):删除一个keytype(key):返回值的类型keys(pattern):返回满足给定pattern的所有keyrandomkey:随机返回key空间的一个keyrename(oldname, newname):将key由oldname重命名为newname,若newname存在则删除newname表示的keydbsize:返回当前数据库中key的数目expire:设定一个key的活动时间(s)ttl:获得一个key的活动时间select(index):按索引查询move(key, dbindex):将当前数据库中的key转移到有dbindex索引的数据库flushdb:删除当前选择数据库中的所有keyflushall:删除所有数据库中的所有key

2、对String操作的命令

set(key, value):给数据库中名称为key的string赋予值valueget(key):返回数据库中名称为key的string的valuegetset(key, value):给名称为key的string赋予上一次的valuemget(key1, key2,…, key N):返回库中多个string(它们的名称为key1,key2…)的valuesetnx(key, value):如果不存在名称为key的string,则向库中添加string,名称为key,值为valuesetex(key, time, value):向库中添加string(名称为key,值为value)同时,设定过期时间timemset(key1, value1, key2, value2,…key N, value N):同时给多个string赋值,名称为key i的string赋值value imsetnx(key1, value1, key2, value2,…key N, value N):如果所有名称为key i的string都不存在,则向库中添加string,名称 key i赋值为value iincr(key):名称为key的string增1操作incrby(key, integer):名称为key的string增加integerdecr(key):名称为key的string减1操作decrby(key, integer):名称为key的string减少integerappend(key, value):名称为key的string的值附加valuesubstr(key, start, end):返回名称为key的string的value的子串

3、对List操作的命令

rpush(key, value):在名称为key的list尾添加一个值为value的元素lpush(key, value):在名称为key的list头添加一个值为value的 元素llen(key):返回名称为key的list的长度lrange(key, start, end):返回名称为key的list中start至end之间的元素(下标从0开始,下同)ltrim(key, start, end):截取名称为key的list,保留start至end之间的元素lindex(key, index):返回名称为key的list中index位置的元素lset(key, index, value):给名称为key的list中index位置的元素赋值为valuelrem(key, count, value):删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0 从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素。lpop(key):返回并删除名称为key的list中的首元素rpop(key):返回并删除名称为key的list中的尾元素blpop(key1, key2,… key N, timeout):lpop 命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果 timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对key i+1开始的list执行pop操作。brpop(key1, key2,… key N, timeout):rpop的block版本。参考上一命令。rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

4、对Set操作的命令

sadd(key, member):向名称为key的set中添加元素membersrem(key, member) :删除名称为key的set中的元素memberspop(key) :随机返回并删除名称为key的set中一个元素smove(srckey, dstkey, member) :将member元素从名称为srckey的集合移到名称为dstkey的集合scard(key) :返回名称为key的set的基数sismember(key, member) :测试member是否是名称为key的set的元素sinter(key1, key2,…key N) :求交集sinterstore(dstkey, key1, key2,…key N) :求交集并将交集保存到dstkey的集合sunion(key1, key2,…key N) :求并集sunionstore(dstkey, key1, key2,…key N) :求并集并将并集保存到dstkey的集合sdiff(key1, key2,…key N) :求差集sdiffstore(dstkey, key1, key2,…key N) :求差集并将差集保存到dstkey的集合smembers(key) :返回名称为key的set的所有元素srandmember(key) :随机返回名称为key的set的一个元素

5、对zset(sorted set)操作的命令

zadd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。zrem(key, member) :删除名称为key的zset中的元素memberzincrby(key, increment, member) :如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为incrementzrank(key, member) :返回名称为key的zset(元素已按score从小到大排序)中member元素的rank(即index,从0开始),若没有member元素,返回“nil”zrevrank(key, member) :返回名称为key的zset(元素已按score从大到小排序)中member元素的rank(即index,从0开始),若没有member元素,返回“nil”zrange(key, start, end):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素zrevrange(key, start, end):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素zrangebyscore(key, min, max):返回名称为key的zset中score >= min且score <= max的所有元素zcard(key):返回名称为key的zset的基数zscore(key, element):返回名称为key的zset中元素element的scorezremrangebyrank(key, min, max):删除名称为key的zset中rank >= min且rank <= max的所有元素zremrangebyscore(key, min, max) :删除名称为key的zset中score >= min且score <= max的所有元素zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX):对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行 SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。

6、对Hash操作的命令

hset(key, field, value):向名称为key的hash中添加元素field<—>valuehget(key, field):返回名称为key的hash中field对应的valuehmget(key, field1, …,field N):返回名称为key的hash中field i对应的valuehmset(key, field1, value1,…,field N, value N):向名称为key的hash中添加元素field i<—>value ihincrby(key, field, integer):将名称为key的hash中field的value增加integerhexists(key, field):名称为key的hash中是否存在键为field的域hdel(key, field):删除名称为key的hash中键为field的域hlen(key):返回名称为key的hash中元素个数hkeys(key):返回名称为key的hash中所有键hvals(key):返回名称为key的hash中所有键对应的valuehgetall(key):返回名称为key的hash中所有的键(field)及其对应的value

三、各种数据类型所对应的应用场景

1、String类型的应用场景

String是最常用的一种数据类型,普通的key/value存储.

2、list类型的应用场景

比较适用于列表式存储且顺序相对比较固定,例如:

省份、城市列表品牌、厂商、车系、车型等列表拆车坊专题列表...

3、set类型的应用场景

Set对外提供的功能与list类似,当需要存储一个列表数据,又不希望出现重复数据时,可选用set

4、zset(sorted set)类型的应用场景

zset的使用场景与set类似,区别是set不是自动有序的,而zset可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序.当你需要一个有序的并且不重复的集合列表,那么可以选择zset数据结构。例如:根据PV排序的热门车系车型列表根据时间排序的新闻列表

5、hash类型的应用场景

类似于表记录的存储页面视图所需数据的存储

四、具体使用参考示例

private void testKey() {System.out.println("=============key==========================");// 清空数据System.out.println(jedis.flushDB());System.out.println(jedis.echo("foo"));// 判断key否存在System.out.println(shardedJedis.exists("foo"));shardedJedis.set("key", "values");System.out.println(shardedJedis.exists("key"));}private void testString() {System.out.println("=============String==========================");// 清空数据System.out.println(jedis.flushDB());// 存储数据shardedJedis.set("foo", "bar");System.out.println(shardedJedis.get("foo"));// 若key不存在,则存储shardedJedis.setnx("foo", "foo not exits");System.out.println(shardedJedis.get("foo"));// 覆盖数据shardedJedis.set("foo", "foo update");System.out.println(shardedJedis.get("foo"));// 追加数据shardedJedis.append("foo", " hello, world");System.out.println(shardedJedis.get("foo"));// 设置key的有效期,并存储数据shardedJedis.setex("foo", 2, "foo not exits");System.out.println(shardedJedis.get("foo"));try {Thread.sleep(3000);} catch (InterruptedException e) {}System.out.println(shardedJedis.get("foo"));// 获取并更改数据shardedJedis.set("foo", "foo update");System.out.println(shardedJedis.getSet("foo", "foo modify"));// 截取value的值System.out.println(shardedJedis.getrange("foo", 1, 3));System.out.println(jedis.mset("mset1", "mvalue1", "mset2", "mvalue2", "mset3", "mvalue3", "mset4", "mvalue4"));System.out.println(jedis.mget("mset1", "mset2", "mset3", "mset4"));System.out.println(jedis.del(new String[] { "foo", "foo1", "foo3" }));}private void testList() {System.out.println("=============list==========================");// 清空数据System.out.println(jedis.flushDB());// 添加数据shardedJedis.lpush("lists", "vector");shardedJedis.lpush("lists", "ArrayList");shardedJedis.lpush("lists", "LinkedList");// 数组长度System.out.println(shardedJedis.llen("lists"));// 排序System.out.println(shardedJedis.sort("lists"));// 字串System.out.println(shardedJedis.lrange("lists", 0, 3));// 修改列表中单个值shardedJedis.lset("lists", 0, "hello list!");// 获取列表指定下标的值System.out.println(shardedJedis.lindex("lists", 1));// 删除列表指定下标的值System.out.println(shardedJedis.lrem("lists", 1, "vector"));// 删除区间以外的数据System.out.println(shardedJedis.ltrim("lists", 0, 1));// 列表出栈System.out.println(shardedJedis.lpop("lists"));// 整个列表值System.out.println(shardedJedis.lrange("lists", 0, -1));}private void testSet() {System.out.println("=============set==========================");// 清空数据System.out.println(jedis.flushDB());// 添加数据shardedJedis.sadd("sets", "HashSet");shardedJedis.sadd("sets", "SortedSet");shardedJedis.sadd("sets", "TreeSet");// 判断value是否在列表中System.out.println(shardedJedis.sismember("sets", "TreeSet"));;// 整个列表值System.out.println(shardedJedis.smembers("sets"));// 删除指定元素System.out.println(shardedJedis.srem("sets", "SortedSet"));// 出栈System.out.println(shardedJedis.spop("sets"));System.out.println(shardedJedis.smembers("sets"));//shardedJedis.sadd("sets1", "HashSet1");shardedJedis.sadd("sets1", "SortedSet1");shardedJedis.sadd("sets1", "TreeSet");shardedJedis.sadd("sets2", "HashSet2");shardedJedis.sadd("sets2", "SortedSet1");shardedJedis.sadd("sets2", "TreeSet1");// 交集System.out.println(jedis.sinter("sets1", "sets2"));// 并集System.out.println(jedis.sunion("sets1", "sets2"));// 差集System.out.println(jedis.sdiff("sets1", "sets2"));}private void testSortedSet() {System.out.println("=============zset==========================");// 清空数据System.out.println(jedis.flushDB());// 添加数据shardedJedis.zadd("zset", 10.1, "hello");shardedJedis.zadd("zset", 10.0, ":");shardedJedis.zadd("zset", 9.0, "zset");shardedJedis.zadd("zset", 11.0, "zset!");// 元素个数System.out.println(shardedJedis.zcard("zset"));// 元素下标System.out.println(shardedJedis.zscore("zset", "zset"));// 集合子集System.out.println(shardedJedis.zrange("zset", 0, -1));// 删除元素System.out.println(shardedJedis.zrem("zset", "zset!"));System.out.println(shardedJedis.zcount("zset", 9.5, 10.5));// 整个集合值System.out.println(shardedJedis.zrange("zset", 0, -1));}private void testHash() {System.out.println("=============hash==========================");// 清空数据System.out.println(jedis.flushDB());// 添加数据shardedJedis.hset("hashs", "entryKey", "entryValue");shardedJedis.hset("hashs", "entryKey1", "entryValue1");shardedJedis.hset("hashs", "entryKey2", "entryValue2");// 判断某个值是否存在System.out.println(shardedJedis.hexists("hashs", "entryKey"));// 获取指定的值System.out.println(shardedJedis.hget("hashs", "entryKey"));        // 批量获取指定的值System.out.println(shardedJedis.hmget("hashs", "entryKey", "entryKey1"));// 删除指定的值System.out.println(shardedJedis.hdel("hashs", "entryKey"));// 为key中的域 field 的值加上增量 incrementSystem.out.println(shardedJedis.hincrBy("hashs", "entryKey", 123l));// 获取所有的keysSystem.out.println(shardedJedis.hkeys("hashs"));// 获取所有的valuesSystem.out.println(shardedJedis.hvals("hashs"));}

如果以上没有找到你要的 可以查看:补充:jedis操作命令、redis命令大全

转载地址:http://www.open-open.com/lib/view/open1385173126448.html

redis中各种数据类型对应的jedis操作命令、redis命令大全相关推荐

  1. redis中各种数据类型对应的jedis操作命令

    2019独角兽企业重金招聘Python工程师标准>>> redis中各种数据类型对应的jedis操作命令 博客分类: 缓存 http://www.fwqtg.net/redis%E4 ...

  2. Redis基础 概念 数据类型 常用指令 Jedis 持久化

    Redis基础 概念 数据类型 常用指令 Jedis 持久化 1. Redis 简介 1.1 NoSQL概念 1.1.1 问题现象 1.1.2 NoSQL的概念 1.2 Redis概念 1.2.1 r ...

  3. redis 中setex、setnx、set、getset 命令的区别与使用

    转载:redis 中setex.setnx.set.getset 命令的区别与使用 介绍几个常用的redis命令: SET 命令 set key value 设置指定 key 的值为 value. 如 ...

  4. java获取redis中各种数据类型key对应的value代码简单封装

    来源:http://blog.csdn.net/russ44/article/details/52121180 目前在做自动化测试时,设计到需要获取存储在redis中的值,总结了操作代码如下: 需要j ...

  5. Redis中的数据类型及其应用场景

    redis中有哪些数据类型?这个问题我被面试官问过好多次了,下面总结下这5种数据类型的特点,命令,还有应用场景 redis客户端的一些通用命令: ping # 测试redis是否链接 如果已链接返回 ...

  6. 基于Redis中 Zset数据类型实现各类高性能排行榜日榜、周榜(附上整合SpringBoot示例代码)

    目录 为什么要使用redis? 日榜.周榜实现方案介绍 热度增加代码参考 日榜获取 周榜获取 为什么要使用redis? 如果使用mysql 要实现排行榜功能,如果使用 mysql或其它关系型数据库 来 ...

  7. 面试官:Redis中集合数据类型的内部实现方式是什么?

    虽然已经是阳春三月,但骑着共享单车骑了这么远,还有有点冷的.我搓了搓的被冻的麻木的手,对着前台的小姐姐说:"您好,我是来面试的."小姐姐问:"您好,您叫什么名字?&quo ...

  8. Redis学习(2):Jedis使用Redis示例

    一.前提 已经默认安装好redis server. 二.创建一个maven项目 本文使用Junit运行测试Redis例子,因此需要maven的pom文件中引入如下依赖jar包 <dependen ...

  9. redis中Zset数据类型最全常用命令

    一.引言 今天晚上不加班,不加班,爽翻.不加班就能安安心心继续学习了,继续redis学习哈.今天学习redis五大数据类型最后一个了.上一章学习了Set无序集合,那么有无序集合肯定就会有有序集合了.Z ...

最新文章

  1. angular(3)服务 --注入---自定义模块--单页面应用
  2. android wear升级方法,LG G Watch官方工具包刷Android wear5.1.1教程(附刷机包)
  3. [转载] 七龙珠第一部——第092话 孙悟空上场了
  4. 剑指Offer - 面试题3. 数组中重复的数字(哈希)
  5. substr php,PHP substr() 函数
  6. nosql----redis持久化详解
  7. 点赞时代,你为什么被人绝交?
  8. 数组的数据查找c语言,【查找数组面试题】面试问题:c语言实现数据… - 看准网...
  9. 第三次面试题目 (反省中!!)
  10. java中dao和dao.impl_java 包 dao 和 dao.impl 问题
  11. centos 7查看CPU温度
  12. 协议栈之packet_type
  13. [office软件教程] 如何调整Word文档的光标大小?调整Word光标方法
  14. sibelius西贝柳斯2023中文版是什么打谱软件?如何下载
  15. 问题解决之Cannot find module ‘fs/promises‘
  16. 浅议抖音短视频平台的利与弊
  17. python npv 计算公式_Python numpy 中常用的数据运算
  18. 量化交易的相对强弱(RSI )指标计算及策略
  19. Spring Aop 获取入参和出参
  20. 小程序与h5的相互跳转

热门文章

  1. 如果部署Excel 加载项?
  2. jeston TX1TX2 ubuntu 安装完毕后确认环境及版本
  3. js day04DOM节点操作、事件对象与BOM
  4. 解决win7 Windows USB无法驱动/驱动错误/该设备无法启动。(代码10)
  5. matlab引用表格命令,如何用matlab引用excel表格数据-matlab如何从excel表格中读取数据?...
  6. Arduino篇(二)火焰、烟雾、CO等多个传感器组合实验设计
  7. 技术合伙人如何避免被踢出局
  8. python 爬取某我音乐【简易版】
  9. vue打包上线并清除缓存机制
  10. TALOS组件化平台搭建总结