一、常用数据类型简介:

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. git别名;git配置使用shell函数;git别名使用shell函数;git获取当前分支;git alias

    获取当前分支 git symbolic-ref -q --short HEAD 2. 在git别名里使用shell函数,$1获取第一个参数的值,$2……$n依次类推,根据自己习惯需要定制 3. 提交r ...

  2. Hadoop + ZK + HBase 环境搭建

    Hadoop 环境搭建 参考资料: http://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/ClusterSetu ...

  3. 【BZOJ】【3697】采药人的路径&【3127】【USACO2013 Open】Yin and Yang

    点分治 Orz hzwer 倒是比较好想到点分治……然而在方案统计这里,我犯了两个错误…… 1.我比较傻逼的想的是:通过儿子来更新父亲,也就是统计以x为根的子树中xxxx的路径有多少条……这样转移. ...

  4. Java switch 枚举

    Switch中能够使用int.byte.short,char,Enum,String.当中Enum为1.5之后新增特性,String为java8新增特性.本文介绍怎样在Switch中使用Enum类型. ...

  5. go语言之进阶篇通过if实现类型断言

    1.通过if实现类型断言 示例: package main import "fmt" type Student struct { name string id int } func ...

  6. Populating Next Right Pointers in Each Node II leetcode java

    题目: Follow up for problem "Populating Next Right Pointers in Each Node". What if the given ...

  7. Valid Sudoku leetcode java

    题目: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could ...

  8. Gson Json 序列号 最常用的功能 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  9. 详解vue组件的keep-alive

    <keep-alive>是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM. <keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是 ...

  10. 【google面试题】求1到n的正数中1出现的次数的两种思路及其复杂度分析

    问题描写叙述: 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.比如输入12,从1到12这些整数中包括1 的数字有1.10.11和12.1一共出现了5次. 这是一道广为流传的googl ...