一、常用数据类型简介:

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

1.String类型

String是最简单的类型,一个key对应一个value

String类型的数据最大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个元素。

3.Set类型

集合,和数学中的集合概念相似。操作中的key理解为集合的名字。

在Redis中,set就是Redis String的无序集合,不允许有重复元素。

Set的最大元素数是2^32-1。

Redis中对set的操作还有交集、并集、差集等。

4.ZSet(Sorted Set)类型

Zset是set的一个升级版本,在set的基础上增加了一个顺序属性,这一属性在添加修改元素时可以指定,每次指定后zset会自动安装指定值重新调整顺序。可以理解为一张表,一列存value,一列存顺序。操作中的key理解为zset的名字。

Zset的最大元素数是2^32-1。

对于已经有序的zset,仍然可以使用SORT命令,通过指定ASC|DESC参数对其进行排序。

5.hash(map)类型

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

二、具体的操作命令

详细的帮助文档可以参见:http://www.redis.cn/commands.html

1.对value操作的命令

 exists(key):确认一个key是否存在

 del(key):删除一个key

 type(key):返回值的类型

 keys(pattern):返回满足给定pattern的所有key

 randomkey:随机返回key空间的一个key

 rename(oldname, newname):将key由oldname重命名为newname,若newname存在则删除newname表示的key

 dbsize:返回当前数据库中key的数目

 expire:设定一个key的活动时间(s)

 ttl:获得一个key的活动时间

 select(index):按索引查询(选择数据库),默认连接的是0

 move(key, dbindex):将当前数据库中的key转移到有dbindex索引的数据库

 flushdb:删除当前选择数据库中的所有key

 flushall:删除所有数据库中的所有key

关于keys命令的使用应该是 keys 正则串

支持的正则表达模式:

  • h?llo 匹配 hellohallo 和 hxllo
  • h*llo 匹配 hllo 和 heeeello
  • h[ae]llo 匹配 hello 和 hallo, 但是不匹配 hillo
  • h[^e]llo 匹配 hallohbllo, … 但是不匹配 hello
  • h[a-b]llo 匹配 hallo 和 hbllo

2.对String操作的命令

 set(key, value):给数据库中名称为key的string赋予值value

 get(key):返回数据库中名称为key的string的value

 getset(key, value):设置一个key的value,并获取设置前的值

 mget(key1, key2,…, key N):返回库中多个string(它们的名称为key1,key2…)的value

 setnx(key, value):如果不存在名称为key的string,则向库中添加string,名称为key,值为value

 setex(key, time, value):向库中添加string(名称为key,值为value)同时,设定过期时间time(单位为秒)

 mset(key1, value1, key2, value2,…key N, value N):同时给多个string赋值,名称为key i的string赋值value i

 msetnx(key1, value1, key2, value2,…key N, value N):如果所有名称为key i的string都不存在,则向库中添加string,名称           key i赋值为value i

 incr(key):名称为key的string增1操作

 incrby(key, integer):名称为key的string增加integer

 decr(key):名称为key的string减1操作

 decrby(key, integer):名称为key的string减少integer

 append(key, value):名称为key的string的值附加value

 substr(key, start, end):返回名称为key的string的value的子串, 下标从0开始,子串的值为start<= V <= end

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位置的元素赋值(替换)为value

 lrem(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就相当于lpop命令,如果timeout>0,key i的list有值时立刻执行lpop命令,如果list的size为0则等待timeout秒,直到有一个可用或者超时。

 brpop(key1, key2,… key N, timeout):rpop的block版本。参考上一命令。

 rpoplpush(srclist, dstlist):返回并删除名称为srclist的list的尾元素,并将该元素添加到名称为dstlist的list的头部

BRPOPLPUSH(srclist, dstlist, timeout):RPOPLPUSH的阻塞版本。当srcList包含元素的时候,这个命令表现得跟RPOPLPUSH一模一样。当srcList是空的时候,Redis将会阻塞这个连接,直到另一个客户端 push 元素进入或者达到 timeout 时限。timeout 为 0 能用于无限期阻塞客户端。

4.对Set操作的命令

 sadd(key, member):向名称为key的set中添加元素member

 srem(key, member) :删除名称为key的set中的元素member

 spop(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中的元素member

 zincrby(key, increment, member) :如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment

 zrank(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的score

 zremrangebyrank(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(map)操作的命令

 hset(key, field, value):向名称为key的hash中添加元素field<—>value

 hget(key, field):返回名称为key的hash中field对应的value

 hmget(key, field1, …,field N):返回名称为key的hash中field i对应的value

 hmset(key, field1, value1,…,field N, value N):向名称为key的hash中添加元素field i<—>value i

 hincrby(key, field, integer):将名称为key的hash中field的value增加integer

 hexists(key, field):名称为key的hash中是否存在键为field的域

 hdel(key, field):删除名称为key的hash中键为field的域

 hlen(key):返回名称为key的hash中元素个数

 hkeys(key):返回名称为key的hash中所有键

 hvals(key):返回名称为key的hash中所有键对应的value

 hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value

下一篇:3、redis之java client环境搭建

2、redis原生的命令操作不同数据类型的更多相关文章

  1. Jedis对Redis的常用命令操作

    本篇主要总结一些Jedis对Redis的常用命令操作: 1.对key操作命令 2.对String操作命令 3.对List操作命令 4.对Set操作命令 5.对Hash操作命令 6.排序操作指令 一.项 ...

  2. Redis 简介与命令操作

    redis 是 key-value 的数据,所以每个数据都是一个键值对,键的类型是字符串: 值的类型分为五种:string.hash.list.set(集合).zset(有序集合). 数据操作的全部命 ...

  3. redis的基础命令操作

    文章目录 前言 一.字符串类型 二.哈希类型 三.列表类型 四.集合类型 五.有序集合类型 六.通过命令 前言 redis的数据结构 redis存储的是key,value格式的数据,其中的key是字符 ...

  4. 【Redis】使用Jedis操作Redis

    Jedis介绍 jedis就是集成了redis的一些命令操作,封装了redis的java客户端. Jedis使用 使用jedis需要引入jedis的jar包,下面提供了maven依赖 jedis.ja ...

  5. Redis系列(二):Redis的数据类型及命令操作

    原文链接(转载请注明出处):Redis系列(二):Redis的数据类型及命令操作 Redis 中常用命令 Redis 官方的文档是英文版的,当然网上也有大量的中文翻译版,例如:Redis 命令参考.这 ...

  6. 【Redis】基本数据类型及命令操作(超详细)

    一.String 1.1 概述 1.2 相关命令列表 1.3 命令示例 二.List 2.1 概述: 2.2 相关命令列表: 2.3 命令示例: 2.4 链表结构的小技巧: 三.Hashes 3.1 ...

  7. 解析Redis操作五大数据类型常用命令

    摘要:分享经常用到一些命令和使用场景总结,以及对Redis中五大数据类型如何使用cmd命令行的形式进行操作的方法. 本文分享自华为云社区<Redis操作五大数据类型常用命令解析>,作者:灰 ...

  8. Redis命令操作简介及五种value数据类型

    转自:https://blog.csdn.net/ty4315/article/details/52050721 Redis是使用键值存储数据,key必须是字符串value支持五种数据类型,最新版本又 ...

  9. Spring+SpringMVC+MyBatis+easyUI整合进阶篇(九)Linux下安装redis及redis的常用命令和操作

    redis简介 Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis与其他key-value缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存 ...

随机推荐

  1. 第一章 AOP

    关于AOP,通常我们会使用AspectJ注解来做,共有6中切面 前置:@Before 后置:@After 返回值:@AfterReturing 异常:@AfterThrowing 环绕:@Around ...

  2. MongoDB资料大全

    摘要: 为了帮助大家进一步了解MongoDB,云栖社区组织翻译了GitHub Awesome MongoDB 资源,涵盖MongoDB中常见的库与工具.应用列表.以及相关的文档.教程等资源. Mong ...

  3. vanilla

    In information technology, vanilla (pronounced vah-NIHL-uh ) is an adjective meaning plain or basic. ...

  4. Python集合模块collections

    collections collections是Python内建的一个集合模块,提供了许多有用的集合类. namedtuple 我们知道tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: ...

  5. scp命令:服务器间远程复制代码

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...

  6. Log4cplus使用指南

    1.  Log4cplus简介 log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统,受Apache Software License保护,作者是Tad E. Smith ...

  7. Linear Regression总结

    转自:http://blog.csdn.net/dongtingzhizi/article/details/16884215 Linear Regression总结 作者:洞庭之子 微博:洞庭之子-B ...

  8. sgd学习率选择问题

    关于使用SGD时如何选择初始的学习率(这里SGD是指带动量的SGD,momentum=0.9): 训练一个epoch,把学习率从一个较小的值(10-8)上升到一个较大的值(10),画出学习率(取log ...

  9. SpringBoot-Mybatis_Plus学习记录之公共字段自动填充

    一.应用场景 平时在建对象表的时候都会有最后修改时间,最后修改人这两个字段,对于这些大部分表都有的字段,每次在新增和修改的时候都要考虑到这几个字段有没有传进去,很麻烦.mybatisPlus有一个很好 ...

  10. em px pt单位介绍及换算

    PX\EM\PT单位介绍 px Pixel单位名称为像素,相对长度单位,像素(px)是相对于显示器屏幕分辨率而言的国内推荐:em单位名称为相对长度单位.相对于当前对象内文本的字体尺寸,国外使用比较多, ...