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

时间: 2024-10-12 11:55:02

redis数据类型的使用和介绍的相关文章

redis数据类型及常用命令介绍(图文实例)

上图中即为redis中5种基本数据类型,在没接触过redis之前,听过最多相关的字眼就是键值对key-value之类,立马让我想到了HashMap.在HashMap中,key和value的的数据类型都可以指定,value也可以是HashMap类型.而在这里,redis的基本数据类型是针对的value,有这5种. 文中所用测试记录环境在Linux下,命令操作在SSH客户端下,这里使用的是Xshell 5,个人使用感觉很方便,同一系列的Xftp 5用于远程文件上传操作也很不错.如有需要,可直接进入官

redis介绍、redis安装、redis持久化、redis数据类型

一:redis介绍 Redis和Memcached类似,也属于k-v数据存储Redis官网redis.io, 当前最新稳定版4.0.1支持更多value类型,除了和string外,还支持hash.lists(链表).sets(集合)和sorted sets(有序集合)redis使用了两种文件格式:全量数据(RDB)和增量请求(aof).全量数据格式是把内存中的数据写入磁盘,便于下次读取文件进行加载.增量请求文件则是把内存中的数据序列化为操作请求,用于读取文件进行replay得到数据,这种类似于m

03 . redis 数据类型介绍

Redis  数据类型 1 . 5种类型: String :字符类型 Hash:   字典类型 List:   列表 Set:    集合 Sorted set:有序集合 2 . 键的通用操作命令: KEYS *          查看KEY支持通配符 DEL  删除给定的一个或多个key EXISTS          检查是否存在 RENAME      变更KEY名 SORT      键值排序,有非数字时报错 TYPE      返回键所存储值的类型 DUMP RESTORE   序例化

Redis-cluster集群【第一篇】:redis安装及redis数据类型

Redis介绍: 一.介绍 redis 是一个开源的.使用C语言编写的.支持网络交互的.可以基于内存也可以持久化的Key-Value数据库. redis的源码非常简单,只要有时间看看谭浩强的C语言,在去看redis的源码能看懂50-60%. redis目前最大的集群应该是新浪的应该. redis目前是vmvaer来支持的,很多的开源软件都需要某些组织来支持的.如果一个开源软件没有金钱来支持的话很难走的持久 二.Redis和Memcache对比 持久化:以电商举例,session用memcache

Redis学习和应用记录--介绍和安装(1)

Redis是一个开源的分布式缓存框架,它也常被理解为数据结构服务器,因为它包含丰富的数据类型,如LIST,SET,SORTEDSET,HASHES等.Redis的全称是Remote Dictionary Server(远程数据字典服务器). Redis的应用场景很多,可以替代Web Session,可以存储大量的需要快速访问的数据(Cache),可以用来实现消息队列,可以作为分布式计算中的共享数据平台.这一节主要介绍Redis的安装.分别介绍Linux和Windows 64位环境下Redis的安

系统学习redis之七——redis数据类型之zset数据类型及操作

sourted sets数据类型介绍 sorted set是set的一个升级版本,他在set的基础上增加了一个顺序属性.这一属性在修改元素的时候可以指定,每次指定后,zset会自动按照新的值调整顺序,是有序集合.可以理解为有两列的MySQL表,一列存value,一列存顺序.操作中key理解为zset的名字. zset数据类型方法 zadd:向指定集合zset中添加元素member,score用于排序,如果该元素已经存在,则更新其顺序 zrange:查看sourted sets里面的所有元素 zr

redis数据类型

Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 . string类型是Redis最基本的数据类型,一个键最大能存储512MB. 实例: 在以上实例中我们使用了 Redis

Redis数据类型之字典

Redis数据类型之字典 标签(空格分隔): redis redis的字典 字典又称符号表(symbol table),关联数组(associative array),或者映射(map).是用于保存键值对的一种抽象数据结构. 字典的key是唯一的,对键值对的操作基本都是基于key来操作的.redis中的数据库底层是使用字典来实现的,对于数据库的增删改查都是基于字典来实现的.redis的哈希键也是基于字典来实现的. 具体的实现是在src下的dict.h和dict.c文件 字典的数据结构 哈希表结点

Redis数据类型之链表

Redis数据类型之链表 链表的实现 redis的列表的底层实现就是一个双链表,源码在src下的adlist.h和adlist.c 链表的结点数据结构 /* * 双端链表节点 */ typedef struct listNode { // 前置节点 struct listNode *prev; // 后置节点 struct listNode *next; // 节点的值 void *value; } listNode; 链表数据结构 /* * 双端链表结构 */ typedef struct l