第二章redis数据类型的使用和介绍

redis数据类型的使用

list  列表

最多可以存2的32次方减1 个

元素组成列表

  用来存储多个有序的字符串。

redis中,可以对列表俩端插入(push)和(pop)弹出,还可以获得制定范围的元素列表,获取指定索引下表的元素等

元素可以重复

命令操作

操作类型 操作

添加 rpush    lpush   linsert

lrange    lindex  llen

删除   lpop    rpop  lrem  ltrim

修改   lset

阻塞操作    blpop   br pop

string字符串

1.缓存功能

2.计数

3.共享session(会话)

4.限速

hash哈希

还叫字典或关联数组

哈希类型是指键值本身就是一种键值对结构

key value

value={field,value}

字符串键值对

key value

name tom

哈希类型

user: 1 : name tom

哈希模式命令格式

1.hset key field(区域) value

2.hget key value

3.hdel key field 删除(可以删除多个)

4.hlen key 计算field的个数

5.批量设置或获取field-value

hmset key field value value .....

hmget key filed value

6.hkeys key 获取所有的键

7.hgetall key 获取所有field

8.hincrby key field 自增

hincrbyfloat key field

9.hstrlen key value

内部编码

ziplist(压缩列表)

当以下两种情况使用ziplist

1.当哈希类型元素个数小于hash-max-ziplist-entries (512个)

2.所有值都小于hash-max-ziplist-value(64字节)

hashtable(哈希表)

关系型数据库与哈希类型不同

1.哈希类型是稀疏的

完全结构化

2.关系型数据库可以做复杂的查询(子查询左查询右查询)

列表list

有序 由元素组成 2的32次方减一

1.列表中元素有序插入新元素后其他元素下标顺延

2.列表中的元素可以重复

命令

添加 rpush lpush linsert

查看 lrange lindex llen (0到-1就是查看全部)

删除 lpop rpop lrem ltrim

修改 lset

阻塞操作 blpop brpop

查看

获取指定范围内的元素列表

lrange key start stop

获取列表指定索引下标的元素

lindex key index

llen

删除

lpop key 左侧删除

rpop key 右侧删除

删除指定的元素

lrem key count value

count > 0 代表从左往右删除最多删除count的个数

count < 0 代表从右往左删除

count=0 代表删除所有

按照索引范围修剪列表

ltrim key start end

修改

修改指定索引下标的元素

lset key index newvalue

阻塞操作

blpop key key ... timeout

brpop key key .... timeout

linkedlist (链表)

lpush+lpop=stack(栈)

lpush+rpop=queue(列队)

lpush+ltrim=capped callection(有限集合)

lpush+brpop=message queue (消息列队)

集合set

集合内部命令

添加元素

sadd key element .....

删除元素

srem key element ....

计算元素个数

scard key

判断元素是否在集合中

sismember key element

随机从集合返回指定个数的元素

srandmember key count

从集合随机弹出元素

spop key

获取所有元素

smember key

集合间的命令

交集

sinter key ...

 sinterstore user:a_b:sinter user:a user:b

并集

sunion key ...

sunionstore

差集

sdiff key ....

差集之间,有相对于的概念

内部编码

intset(整数集合):当集合的元素都是整数并且元素的个数小于set-max-intest-entries(512个)

超过 512 默认更改为hashtable

hashtable(哈希表):当集合类型无法满足intset的条件时,redis

会使用hashtable

使用场景

标签tag

有序集合 zset)

有序集合相对于哈希,列表/集合有一点的陌生,它有序

不能重复

数据结构 能否重复 是否有序 有序的实现方式

列表 1 1 下表索引

集合 0 0 没有

有序集合 0 1 分值

zadd 创建有序集合,添加成员以及分数

zcard key' 查看成员个数

zscore key member  member :成员的名字)

计算成员的排名

zrank key member  从低到高

zrevrank key member    从高到低

 zrem  key member    删除成员

zrincrby key 增加的分数   成员名字

返回指定排名范围的成员   

zrange key start end (索引下角标 )   withscores  从低到高的排名

zrevrange key start end  (索引下角标 )   withscores  从高到底

 zrangebyscore key min max    返回指定分数范围的成员  withscores  : 分数,可加选项

 zrevrangebyscore key max min    删除指定的排名内的升序元素

zremrangebyrank key start end

zcount key min max     返回指定分数范围的成员

zremrangebyrank key min max   删除 指定排名的成员

zremrangebyscore key min max withscores    删除指定分数范围的成员

 zremrangebyscore l (4 +inf    //删除 不包括4分 ,以及4分以上的所有人

inf :无穷大或者无穷小

( : 不包含

zinterstore 交集的名字  个数 有序集合1 有序集合2

 zunionstore  交集的名字  个数 有序集合1 有序集合2

有序集合内部编码

ziplist(压缩表)

skiplist(跳跃列表)

 zremrangebyscore key min max

有序集合交集

zinterstore  destination  numkeys key

交集       名字       数字

[weight]  [aggregate sum | min max ]

destination

numkeys

numkeys destination  numkeys key   withscores  

[weight]  [aggregate sum | min max ]

withscores  :显示出分数

内部编码

Ziplist   压缩里列 ,当有序集合的元素个数小于 zset-max-ziplist-entries (128个)

同时每个元素的值都小于 zset-max-ziplist-value (64字节)

Skiplist :跳跃表

使用场景  

排行榜系统

按照时间 ,播放量

添加用户的点赞数

zadd user:ranking:2018_01_08

21 zhangyi

Zrem rankingL:2018_01_08 zhangyi

zrevrangebyrank user  user: ranking :2018_01_08 0 9

Hgetall user:info

原文地址:https://www.cnblogs.com/bingpo-blade/p/9234137.html