分享

Redis所支持的数据结构

 张小龙net馆藏 2019-11-14

1、启动Redis
2、Redis所支持的数据结构
  2.1、Redis常用操作
  2.2、String类型及操作
  2.3、Hash类型及操作
  2.4、List类型及操作
  2.5、Set类型及操作
  2.6、Zset类型及操作

1、启动Redis

首先进入到解压后的Redis目录

 

然后开启Redis服务器的daemon启动程序,命令:redis-server

最后开启Redis命令行操作工具,命令:redis-cli   (若需要支持输入中文则命令:redis-cli --raw)

 

2、Redis所支持的数据结构

Redis允许的value数据结构类型有5种:String(字符串)、List(列表)、Set(集合)、Hash(哈希)、Zset(有序集合)。

再讲5中数据结构的操作命令前先归纳一下:

  • 增加操作:String(set、mset),List(lpush 、rpush),Set(sadd),Hash(hset、hmset),Zset(zadd)
  • 删除操作:String(del),List(lpop、rpop),Set(srem,spop),Hash(Hdel),Zset(zrem)
  • 查询操作:String(get),List(lrange),Set(smembers),Hash(hkeys,hvals,hgetall),Zset(zrange)
  • 返回长度操作:List(llen),Set(scard),Hash(hlen),Zset(zcard)

 

2.1、Redis常用操作

select number(选择数据库命令)

keys *(查看当前redis库中所有键)

keys xx*(查看xx开头的所有键)

exists key(查看键是否存在)

 

del key(删除此key及其对应的value)

expire key time(为key设置一个过期时间time(s),当到了过期时间时,自动删除键值)

persist key(移除key的过期时间)

ttl key(查询key的剩余过期时间,若没有设置过期时间为-1)

move key number(将一个键移到其他number库中)

dbsize(返回当前库有多少key)

flushdb (删除当前库所有key)

rename key1 key2(将key1重命名key2)

type key (返回key的类型)

 

2.2、String类型及操作

  • String类型是最简单的类型,可以保存二进制字节序列。从内部看是一个byte数组,最大上限是1G字节。
  • 用来存储三种类型的值:1.二进制序列字符串。 2.整型数据。 3.浮点数据。

操作命令:

set key value(添加或者更改key对应的value)

get key(读取key对应的value)

del key(删除此key及其对应的value)

setnx key value(若没有此键则添加数据,有则返回0。setnx的意思是set not exists,若不存在则添加)

setex key existstime value(设置键值对并指定有效期)

setrange key index value (从以前value的第index开始替换为新设定的值)

 

mset key1 value1 key2 value2...(一次性设置多个键值)

msetnx key1 value1 key2 value2...(若其中任意一个键存在都添加失败)

getset key value(返回旧值并设置一个新值)

getrange key offset1 offset2(取键对应值的子字符串)

 

mget key1 key2 key3....(获取多个值,若无值返回nil)

incr key(为键对应的值进行加1操作,key不存在时设置为0)

incrby key number(和incr类似,若无key则创建一个key)

 

 

append key value(给指定字符串在末尾添加新值)

strlen key (取出指定key的value长度)

 

2.3、Hash类型及操作

操作命令:

hkeys hash(看hash中所有键)

hvals hash(查看hash中所有值)

hgetall hash(找hash中所有键和值)

hset hash field value(在hash中添加一个字段)

hsetnx hash field value(设置一个字段,若存在此字段返回0)

hmset hash field1 value1 field2 value2....(同时设置多个多个字段)

hget hash field(获取hash中指定字段)

 

hmget hash field1 field2...(取hash中多个字段值)

hincrby hash field number(给字段加上指定值)

hexists hash field (测试字段是否存在)

hlen hash(返回hash的field数量)

hdel hash field(删除hash某个字段)

2.4、List类型及操作

  • list在Redis存储为有序的字符串序列,其实就是每个子元素都是string类型的双向链表。最大长度为2^32。

操作命令:

lpush list value (从list头部插入值)

 

rpush list value(从list尾部插入值)

lrange list 0 -1 (查询list中所有值)

linsert list before(after) oldvalue newvalue  (在list中的指定的值之前或者之后插入一个值)

lset list offset value (设定list中指定下标的元素值)

lrem list number value(从list头部顺序删除number个和value相同的值)

ltrim list offset1 offset2 (保留在offset1 offset2中的所有数据,其他删除)

lpop list (删除list头部,并返回删除元素)

 

rpop list (删除list尾部,并返回删除元素)

 

rpoplpush(删除第一个list的尾部,并添加到第二个list的头部,返回此元素)

 

lindex list index (返回list中index下标的元素)

 

llen list (返回list对应长度)

2.5、Set类型及操作

  • 是一个字符串序列,set 内部使用hash表保持唯一性。用来做交集、并集、补集方便。

操作命令:

sadd set member(向set中添加元素,重复添加返回0)

smembers set(查询set中所有元素)

 

srem set member(在set中删除member,没有则返回0)

 

spop set (随机返回并删除set中的一个元素)

srandmember set(随机返回一个set中的元素,但不删除)

sdiff set1 set2 (返回set1对set2的补集)

sdiffstore set1 set2 set3(返回set2对set3的补集给set1)

sinter set1 set2(返回set1和set2的交集)

sunion set1 set2(返回set1和set2的并集)

 

sunionstore set1 set2 set3(set2和set3的并集结果存放在set1中)

smove set1 set2 member(从set1中移动member进入set2)

scard set(返回set元素个数)

sismember set member(判断set中是否有member有返回1,无返回0)

2.6、Zset类型及操作

  • 在set基础上加了一个顺序属性。Zset中每个成员都有一个score关联,通过score来为集合中的成员从大到小排序。
  • 经常作为索引使用。

操作命令:

zadd zset score member(向zset中添加成员,若member存在则根据score更新该元素顺序)

zrange zset 0 -1(查询所有成员)

zrange zset 0 -1 withscores(查询zset中所有分数和成员,按分数从小到大)

zrevrange zset 0 -1 withscores(查询zset中所有分数和成员,按分数从大到小)

 zrem zset member(删除元素member)

 

zincrby zset score member(对member 的分数增加score)

zrank zset member (返回member在zset中的从小到大排名)

zrevrank zset member(返回member在zset中的从大到小排名)

zcount zset score1 score2(计算了分数在score1和score2间元素的个数)

 

zcard zset (返回集合中元素的个数)

zscore zset member(返回元素对应的score)

zremrangebyrank zset offset1 offset2(删除索引offset1到offset2之间的元素)

zremrangebyscore zset score1 score2(删除分数范围之间的元素)

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多