资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

Redis有哪些数据类型

这篇文章主要介绍“redis有哪些数据类型”,在日常操作中,相信很多人在Redis有哪些数据类型问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Redis有哪些数据类型”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

目前成都创新互联公司已为上千的企业提供了网站建设、域名、虚拟主机、网站托管、服务器托管、企业网站设计、陆良网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

Redis数据类型

redis的命令是忽略大小写的

一、 String类型

赋值

> set name 王五
> select 1
> set name zhangsan
> get name

设置/获取多个键值
> mset age 25 gender male city 杭州
> get age
> mget age city

取值再赋值
> getset s2 111
> getset s2 222

尾部追加值
> append name hello

删除
> del s2

数值增减

递增
当存储的字符串是整数时,使用命令incr使当前键值加1,返回递增后的值
> incr num
指定步长
> incrby num 2

递减
> decr num
> decrby num 2

应用场景,存储商品信息
> incr items:id

二、Hash类型

hset命令不区分插入和更新操作,插入操作返回1,更新返回0

一次设置一个字段
> hset user name lizi
一次设置多个字段
> hmset user age 25 gender male
当字段不存在时赋值,存在则不执行任何操作
> hsetnx user address hangzhou

一次获取一个字段
> hget user name
一次获取多个字段
> hmget user name age
一次获取所有字段值
> hgetall user

删除一个或多个字段,返回被删除的字段个数
> hdel user age address

数字增加
> hset user age 20
> hincrby user age 2
> hget user age

判断字段是否存在
> hexists user age

只获取字段名或字段值
>hkeys user
>hvals user

获取字段数量
> hlen user

应用场景,存储商品信息
> hmset items:1001 id 1001 name iphonex price 1999 color black
> hmset items:1002 id 1002 name iphonex price 1999 color black
获取商品信息
> hget items:1001 name
> hgetall items:1001

三、List类型

向列表左边添加元素
> lpush list 0 9 8
> lpush list:1 1 2 3 4

向列表右边添加元素
> rpush list:1 5 6 7

查看列表
> lrange list:1 0 3
> lrange list:1 0 -1 读所有

从列表两端弹出元素,返回移除的元素值
> lpop list:1
> rpop list:1

获取列表中元素的个数
> llen list:1

删除列表中指定的值
LREM命令会删除列表中前count个值为value的元素,返回实际删除的元素个数。根据count值的不同,该命令的执行方式会有所不同: 
        当count>0时, LREM会从列表左边开始删除。 
        当count<0时, LREM会从列表后边开始删除。 
        当count=0时, LREM删除所有值为value的元素。 
> lrem list:1 1 5
> lrem list:1 -1 5
> lrem list:1 0 5

获取指定索引的元素值,索引从0开始
> lindex list:1 0

设置指定索引的元素值
> lset list:1 0 11

保留列表指定范围的元素
> ltrim list:1 0 2

向指定元素值的前后插入元素,返回列表的元素个数
> linsert list:1 before 2 10 
> linsert list:1 after 2 10

将一个元素从一个列表移到另一个列表
> rpoplpush list:1 list:2

应用场景,商品评论
> lpush items:comment:1001 '{"comment":"good product","date":1430295077289}'
> lpush items:comment:1001 '{"comment":"bad product","date":1430295078888}'

四、 Set类型,元素不重复,无序

添加
> sadd set1 a b c

删除
> srem set1 b

获取
> smembers set1

判断元素是否存在,存在返回1,不存在返回0
> sismember set1 a

差集运算,属于A但不属于B的元素构成的集合,A-B
> sadd setA 1 2 3
> sadd setB 2 3 4
> sdiff setA setB
> sdiff setB setA

交集,A ∩ B
> sinter setA setB

并集,A ∪ B
> sunion setA setB

获取元素的个数
> scard setA

随机弹出一个元素
> spop setA

五、SortedSet类型,zset,有序

添加
> zadd english:scoreboard 80 zhangsan 70 lisi 90 wangwu
> zadd english:scoreboard 60 maliu
修改
> zadd english:scoreboard 85 zhangsan
获取元素的分数
> zscore english:scoreboard maliu
删除元素
> zrem english:scoreboard maliu
获取排名在某个索引范围的元素值列表

    按照分数值从小到大排列
    > zrange english:scoreboard 0 1
    > zrange english:scoreboard 0 -1
    > zrange english:scoreboard 0 -1 withscores
    按照分数值从大到小排列
    >zrevrange english:scoreboard 0 -1
    >zrevrange english:scoreboard 0 -1 withscores

获取指定分数范围内的元素
> zrangebyscore english:scoreboard 80 90 withscores
> zrangebyscore english:scoreboard 80 90 withscores limit 1 2

增加某个元素的分数,返回更改后的分数
> zincrby english:scoreboard 5 wangwu

获取集合中元素的数量
> zcard english:scoreboard

获取指定分数内的元素个数
> zcount english:scoreboard 80 90

按照排名指定索引范围删除元素
> zremrangebyrank english:scoreboard 0 1

按照分数范围删除元素
> zremrangebyscore english:scoreboard 80 90

获取元素的排名
从小到大
> zrank english:scoreboard lisi
从大到小
> zrevrank english:scoreboard lisi

应用场景,商品销售排行榜
> zrank items:sellsort 9 1001 10 1002
> zincrby items:sellsort 1 1001
> zrevrange items:sellsort 0 9 withscores

设置key的生存时间
> set test hello
> expire test 5
> ttl test 【-1没有设置存活时间,-2已删除】
> get test
> persist test

匹配查询key
> keys user*

数据库中是否存在key
> exists user

删除key
> del user

重命名key
> rename user userabc

返回数据类型
> type setA

到此,关于“Redis有哪些数据类型”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


分享文章:Redis有哪些数据类型
文章网址:http://cdkjz.cn/article/jhopep.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220