redis中数据类型命令整理_Redis

来源:脚本之家  责任编辑:小易  

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合

redis是键值对的数据库,有5中主要数据类型:

redis开创了一种新的数据存储思路,使用redis,我们不用在面对功能单调的数据库时,把精力放在如

字符串类型(string),散列类型(hash),列表类型(list),集合类型(set),有序集合类型(zset)

1、set:设置key对应的值为string类型的value。 >s

几个基本的命令:

如果需要用到Redis存储List对象,而list又不需要进行操作,可以按照MC的方式进行存储,不过

函数 说明
keys * 获得当前数据库的所有键

exists key [key ...] 判断键是否存在,返回个数,如果key有一样的也是叠加数
del key [key ...] 删除键,返回删除的个数

type key 获取减值的数据类型(string,hash,list,set,zset)
flushall 清空所有数据库
config [get、set] redis配置

在指定Key所关联的List Value的头部插入参数中给出的所有Values。如果该Key不存在,

-inf 负无穷

野生动物中,那些相对弱小一点或乖顺一点的,例如猫咪、旱獭等小动物就会把自己的排泄物认真地埋起来,为的是表示自己的臣服,以防自己的排泄物气味影响到那些凶猛动物对领地的标记。另外,更重要的是,猫作为狩猎型的动物,不愿意被狩猎的对象发现他的踪迹,所以会尽力的去掩盖自己的气味,减少留下的踪迹。掩埋便便或尿尿就是要消除这些气味,避免被猎物发现,惊吓到他们。那是远古的本能留下来的,所以他们上完厕所会去掩埋,不过也有不记得做这个的家伙。而现在生活在我们周围的家猫也继承了这种防御和乖顺的本能,虽然在人类的家园,它们不会有很大的危险,但是出于本能,它们也照样会感到不安:外界的环境对它们来说是不确定的,说不定危险

+inf正无穷

宝宝运动发育有赖于视感知的发育,与精神、肌肉的发育有密切的联系。发育的顺序是由上到下、由粗到细、由不协调到协调。分粗运动和细运动两个方面(一)粗运动0月:宝宝仅有反射性活动(如吞咽.吸吮等)和不自主的运动1个月:宝宝睡醒后常做哈欠动作,头可以扭转90度2个月:宝宝开始扶坐或者侧卧身能勉强抬头45度3个月:宝宝可以把头扭180度,这个时候妈妈拉起宝宝的话,头与身体会呈直线,头不会倒在后面,抱起来的时候头也不回耸拉下来。这个时候要注意孩子手掌是可以打开了,不再是紧握的状态,嘴巴开始吃手,手心向内,可以吃到大拇指。4~5个月:宝宝可以用手撑起半个上身,开始翻身6个月:宝宝能够独坐片刻,双臂开始有力量

一:字符串类型(string)

纹绣师在眉部边框的处理过程中,会遇到不少懊恼的问题!总体上可以分为两点第一点:敷完舒缓剂之后后、或者操作过程中眉框不见了第二点:眉部的边框怎么操作才会整体效果显得立体(特别雾眉)解决方法:1线条眉的边框:操作线条眉的边框比较简单,一般同学在这方面很少遇到问题,只要把眉框定好了,在眉框的范围内操作线条就可以了。把线条的起点都在边框的边缘上开始操作就能整整齐齐。雾眉的边框:在打雾的操作过程中,边框问题又存在两大问题。问题一:打雾边框太清晰明显一个框痕太重了!解决办法:2出现这样的情况,一般情况下都是因为操作的心理问题。边框明显一个框痕是因为操作过深、重复次数太多才会出现这个情况。很多新手纹绣师,在

字符串类型是Redis的最基本类型,它可以存储任何形式的字符串。其它的四种类型都是字符串类型的不同形式。

北京时间7月31日晚上,曼联官方宣布从切尔西签下马蒂奇,按照媒体的报道,转会费大约是4000万英镑。不得不说,曼联做了一笔好买卖,而切尔西出售马蒂奇简直就是昏招。其实孔蒂应该留下马蒂奇,看看切尔西目前的阵容,虽然切尔西官网上显示一线队有32人,但是其中包括门将,即将离队的科斯塔和雷米,还有11个是青训小将,也就是说,实际可用人员只有18人,其中门将就有3人。这样的阵容厚度如何应对下赛季的四线作战?切尔西虽然引进了吕迪格、莫拉塔等人,但是实力并没有增加,反而有些下降,锋线上科斯塔换成了莫拉塔,莫拉塔未来或许或超越科斯塔,但是目前而言,还达不到科斯塔的水平。至少在西班牙国家队中,科斯塔可以牢牢的把

函数 语法
最基本的命令:GET、SET GET key,SET key value value如果有空格需要双引号以示区分
整数递增:INCR INCR key 默认值为0,所以首先执行命令得到 1 ,不是整型提示错误
增加指定的整数:INCRBY INCRBY key increment
整数递减:DECR DECR key 默认值为0,所以首先执行命令得到 -1,不是整型提示错误
减少指定的整数:DECRBY DECRBY key increment
增加指定浮点数:INCRBYFLOAT INCRBYFLOAT key increment 与INCR命令类似,只不过可以递增一个双精度浮点数
向尾部追加值:APPEND APPEND key value redis客户端并不是输出追加后的字符串,而是输出字符串总长度
获取字符串长度:STRLEN STRLEN key 如果键不存在返回0,注意如果有中文时,一个中文长度是3,redis是使用UTF-8编码中文的
获取多个键值:MGET MGET key [key ...] 例如:MGET key1 key2
设置多个键值:MSET MSET key value [key value ...] 例如:MSET key1 1 key2 "hello redis"
二进制指定位置值:GETBIT

GETBIT key offset 例如:GETBIT key1 2 ,key1为hello 返回 1,返回的值只有0或1,当key不存在或超出实际长度时为0

设置二进制位置值:SETBIT SETBIT key offset value ,返回该位置的旧值
二进制是1的个数:BITCOUNT BITCOUNT key [start end] ,start 、end为开始和结束字节
位运算:BITOP BITOP operation destkey key [key ...] ,operation支持AND、OR、XOR、NOT
偏移:BITPOS BITPOS key bit [start] [end]

二:散列类型(hash)

函数 语法
设置单个:HSET HSET key field value,不存在时返回1,存在时返回0,没有更新和插入之分
设置多个:HMSET HMSET key field value [field value ...]
读取单个:HGET HGET key field,不存在是返回nil
读取多个:HMGET HMGET key field [field ...]
读取全部:HGETALL HGETALL key,返回时字段和字段值的列表
判断字段是否存在:HEXISTS HEXISTS key field,存在返回1 ,不存在返回0
字段不存在时赋值:HSETNX HSETNX key field value,与hset命令不同,hsetnx是键不存在时设置值
增加数字:HINCRBY HINCRBY key field increment ,返回增加后的数,不是整数时会提示错误
删除字段:HDEL HDEL key field [field ...] ,返回被删除字段的个数
只获取字段名:HKEYS HKEYS key ,返回键的所有字段名
只获取字段值:HVALS HVALS key ,返回键的所有字段值
字段数量:HLEN HLEN key ,返回字段总数

三:列表类型(list)

内部使用双向链表实现,所以获取越接近两端的元素速度越快,但通过索引访问时会比较慢

函数 语法
添加左边元素:LPUSH LPUSH key value [value ...] ,返回添加后的列表元素的总个数
添加右边元素:RPUSH RPUSH key value [value ...] ,返回添加后的列表元素的总个数
移除左边第一个元素:LPOP LPOP key ,返回被移除的元素值
移除右边第一个元素:RPOP RPOP key ,返回被移除的元素值
列表元素个数:LLEN LLEN key, 不存在时返回0,redis是直接读取现成的值,并不是统计个数
获取列表片段:LRANGE

LRANGE key start stop,如果start比stop靠后时返回空列表,0 -1 返回整个列表正数时:start 开始索引值,stop结束索引值(索引从0开始)负数时:例如 lrange num -2 -1,-2表示最右边第二个,-1表示最右边第一个,

删除指定值:LREM

LREM key count value,返回被删除的个数

count>0,从左边开始删除前count个值为value的元素

count<0,从右边开始删除前|count|个值为value的元素

count=0,删除所有值为value的元素

索引元素值:LINDEX LINDEX key index ,返回索引的元素值,-1表示从最右边的第一位
设置元素值:LSET LSET key index value
保留列表片段:LTRIM LTRIM key start stop,start、top 参考lrange命令
一个列表转移另一个列表:RPOPLPUSH

RPOPLPUSH source desctination ,从source列表转移到desctination列表,该命令分两步看,首先source列表RPOP右移除,再desctination列表LPUSH

四:集合类型(set)

集合类型值具有唯一性,常用操作是向集合添加、删除、判断某个值是否存在,集合内部是使用值为空的散列表实现的。

函数 语法
添加元素:SADD

SADD key member [member ...] ,向一个集合添加一个或多个元素,因为集合的唯一性,所以添加相同值时会被忽略。返回成功添加元素的数量。

删除元素:SREM SREM key member [member ...] 删除集合中一个或多个元素,返回成功删除的个数。
获取全部元素:SMEMBERS SMEMBERS key ,返回集合全部元素
值是否存在:SISMEMBER

SISMEMBER key member ,如果存在返回1,不存在返回0
差运算:SDIFF SDIFF key [key ...] ,例如:集合A和集合B,差集表示A-B,在A里有的元素B里没有,返回差集合;多个集合(A-B)-C
交运算:SINTER SINTER key [key ...],返回交集集合,每个集合都有的元素
并运算:SUNION  SUNION key [key ...],返回并集集合,所有集合的元素
集合元素个数:SCARD SCARD key ,返回集合元素个数
集合运算后存储结果

SDIFFSTROE destination key [key ...] ,差运算并存储到destination新集合中SINTERSTROE destination key [key ...],交运算并存储到destination新集合中SUNIONSTROE destination key [key ...],并运算并存储到destination新集合中

随机获取元素:SRANDMEMGER

SRANDMEMBER key [count],根据count不同有不同结果,count大于元素总数时返回全部元素count>0 ,返回集合中count不重复的元素count<0,返回集合中count的绝对值个元素,但元素可能会重复

弹出元素:SPOP SPOP key [count] ,因为集合是无序的,所以spop会随机弹出一个元素

五:有序集合类型 zset(sorted set:有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。

redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

函数 语法
添加集合元素:ZADD ZADD key [NX|XX] [CH] [INCR] score member [score member ...],不存在添加,存在更新。
获取元素分数:ZSCORE ZSCORE key member ,返回元素成员的score 分数
元素小到大:ZRANGE

ZRANGE key start top [WITHSCORES] ,参考LRANGE ,加上withscores 返回带元素,即元素,分数当分数一样时,按元素排序

元素大到小:ZREVRANGE ZREVRANGE key start [WITHSCORES] ,与zrange区别在于zrevrange是从大到小排序
指定分数范围元素:ZRANGEBYSCORE

ZRANGEBYSCORE key min max [WITHSCORE] [LIMIT offest count]返回从小到大的在min和max之间的元素,( 符号表示不包含,例如:80-100,(80 100,withscore返回带分数limit offest count 向左偏移offest个元素,并获取前count个元素

指定分数范围元素:ZREVRANGESCORE

ZREVRANGEBYSCORE key max min [WITHSCORE] [LIMIT offest count]与zrangebyscore类似,只不过该命令是从大到小排序的。

增加分数:ZINCRBY ZINCRBY key increment member ,注意是增加分数,返回增加后的分数;如果成员不存在,则添加一个为0的成员。

到此这篇关于redis中数据类型命令整理的文章就介绍到这了,更多相关redis中5种数据类型基本命令介绍内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

redis各种数据类型分别在什么情况下使用

1.取最新N个数据的操作

•使用LPUSH latest.comments<ID>命令,向list集合中插入数据

•插入完成后再用LTRIM latest.comments 0 5000命令使其永远只保存最近5000个ID

•然后我们在客户端获取某一页评论时可以用下面的伪代码 redis.lrange("latest.comments",start,start+num_items-1)

ps:如果输入无序则可以使用sorted set用时间作为score,然后lrangebyscore分页读取,按时间排序

2.排行榜应用,取TOP n操作

将你要排序的值设置成sorted set的score,将具体的数据设置成相应的value,每次只需要执行一条ZADD命令即可。

3.需要精准设定过期时间的应用

比如你可以把上面说到的sorted set的score值设置成过期时间的时间戳,那么就可以简单地通过过期时间排序,定时清除过期数据了

4.计数器应用

INCR,DECR命令

5.Uniq操作,获取某段时间所有数据排重值

使用Redis的set数据结构

6.实时系统,反垃圾系统

set

7.Pub/Sub构建实时消息系统

8.构建队列系统

使用list可以构建队列系统,使用sorted set甚至可以构建有优先级的队列系统。

9.缓存

其实没有固定说那个类型一定用在什么场景,你需要了解redis数据类型的特点,并利用其特点来满足你的场景需要。

redis有字符串类型、列表、哈希表(散列表)、集合、有序集合这5种,各有不同。各有特点,列表经常用作队列用作需要保持顺序的场景,散列表可以去除重复值而且可以设置field属性,集合可以去除重复而且支持集合操作适合tag系统以及关注人列表,有序集合在集合基础上增加了排序。

redis 查看key的类型,是什么命令?

语法

redis 127.0.0.1:6379> TYPE KEY_NAME

可用版本

>= 1.0.0

返回值

返回 key 的数据类型,数据类型有:

none (key不存在)

string (字符串)

list (列表)

set (集合)

zset (有序集)

hash (哈希表)

列表数据 redis用什么类型

1.strings(字符串)

a)如果只使用redis中的字符串类型,且不使用redis的持久化功能,那么,redis就和memcache非常非常的像了;

b)在遇到数值操作时,会自动转换过为字符串,如写入数字1,读出来将是字符串1;

c)本身具有原子性的指令:incr、decr和Memecached中increment、decrement类似;

d)应用场景:常规计数-微博数,粉丝数;

2.lists(列表)

a)lists数据类型的实现不是数组而是通过链表这种数据结构实现;

b)使用Lists结构,我们可以轻松地实现最新消息排行等功能。Lists的另一个应用就是消息队列,可以利用Lists的PUSH操作,将任务存在Lists中,然后工作线程再用POP操作将任务取出进行执行;

c)每个子元素都是String类型的双向链表,可以通过push和pop操作从列表的头部或者尾部添加或者删除元素,这样List即可以作为栈,也可以作为队列;

3.sets(无序集合)

a)所谓集合就是一堆不重复值的组合,并且是没有顺序的;

b)在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis还为集合提供了求交集、并集、差集等操作,可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。

4.sorted sets(有序集合)

a)和Sets相比,Sorted Sets增加了一个权重参数score,使得集合中的元素能够按score进行有序排列;

b)比如一个存储全班同学成绩的Sorted Sets,其集合value可以是同学的学号,而score就可以是其考试得分,这样在数据插入集合的时候,就已经进行了天然的排序。可以用Sorted Sets来做带权重的队列,比如普通消息的score为1,重要消息的score为2,然后工作线程可以选择按score的倒序来获取工作任务。让重要的任务优先执行。

c)应用场景:在线游戏的排行榜,根据得分你通常想要:

i.列出前100名高分选手

ii.列出某用户当前的全球排名

5.hashes(哈希)

a)在Memcached中,我们经常将一些结构化的信息打包成hashmap,在客户端序列化后存储为一个字符串的值,比如用户的昵称、年龄、性别、积分等,这时候在需要修改其中某一项时,通常需要将所有值取出反序列化后,修改某一项的值,再序列化存储回去。这样不仅增大了开销,也不适用于一些可能并发操作的场合(比如两个并发的操作都需要修改积分)。而Redis的Hash结构可以使你像在数据库中Update一个属性一样只修改某一项属性值。

b)应用场景:存储部分变更数据,如用户信息,session共享;

redis里list类型的数据怎么使用

1. LPUSH/LPUSHX/LRANGE:

/> redis-cli #在Shell提示符下启动redis客户端工具。

redis 127.0.0.1:6379> del mykey

(integer) 1

#mykey键并不存在,该命令会创建该键及与其关联的List,之后在将参数中的values从左到右依次插入。

redis 127.0.0.1:6379> lpush mykey a b c d

(integer) 4

#取从位置0开始到位置2结束的3个元素。

redis 127.0.0.1:6379> lrange mykey 0 2

1) "d"

2) "c"

3) "b"

#取链表中的全部元素,其中0表示第一个元素,-1表示最后一个元素。

redis 127.0.0.1:6379> lrange mykey 0 -1

1) "d"

2) "c"

3) "b"

4) "a"

#mykey2键此时并不存在,因此该命令将不会进行任何操作,其返回值为0。

redis 127.0.0.1:6379> lpushx mykey2 e

(integer) 0

#可以看到mykey2没有关联任何List Value。

redis 127.0.0.1:6379> lrange mykey2 0 -1

(empty list or set)

#mykey键此时已经存在,所以该命令插入成功,并返回链表中当前元素的数量。

redis 127.0.0.1:6379> lpushx mykey e

(integer) 5

#获取该键的List Value的头部元素。

redis 127.0.0.1:6379> lrange mykey 0 0

1) "e"

2. LPOP/LLEN:

redis 127.0.0.1:6379> lpush mykey a b c

  • 本文相关:
  • windows下redis的安装使用图解
  • redis实现布隆过滤器的方法及原理
  • redis有序集合类型的操作_动力节点java学院整理
  • 详解redis是如何实现队列消息的ack
  • redis中使用java脚本实现分布式锁
  • redis的2种持久化方案深入讲解
  • 深入了解redis的性能
  • 解决redis开启远程访问及密码问题
  • redis template实现分布式锁的实例代码
  • redis在php中常用的语法【推荐】
  • redis各种数据类型分别在什么情况下使用
  • redis 查看key的类型,是什么命令?
  • 列表数据 redis用什么类型
  • redis里list类型的数据怎么使用
  • radis有几种数据类型
  • redis支持的数据类型有哪些
  • 怎么向redis数据库中同时插入不同类型的数据
  • redis里的基本数据类型有几种
  • Redis在实际项目怎么把一个对象,和list集合存进去,用哪种数据类型
  • redis list数据类型中key值有哪些
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页rediswindows下redis的安装使用图解redis实现布隆过滤器的方法及原理redis有序集合类型的操作_动力节点java学院整理详解redis是如何实现队列消息的ackredis中使用java脚本实现分布式锁redis的2种持久化方案深入讲解深入了解redis的性能解决redis开启远程访问及密码问题redis template实现分布式锁的实例代码redis在php中常用的语法【推荐】超强、超详细redis数据库入门教程redis常用命令、常见错误、配置技redis操作命令总结redis中5种数据结构的使用场景介64位windows下安装redis教程redis中使用redis-dump导出、导入redis中统计各种数据大小的方法redis常用命令小结让redis在你的系统中发挥更大作用centos 6.6下redis安装配置记录谈谈redis分布式锁的正确实现方法redis配置文件详解redis list列表的详细介绍玩转redis搭建集群之sentinel详解linux 下redis5.0.0安装教程详解redis 实现“附近的人”功能redis集群规范详解windows环境部署redis集群redis中scan命令的基本使用教程利用redis统计网站在线活跃用户的方法
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved