5.相关介绍和命令

5. redis是单线程+多路io复用技术

	多路复用是指使用一个线程来检查多个文件描述符的就绪状态,比如调用select和poll函数,传入多个文件毛舒服,如果有一个文件描述符就绪,则返回,否则阻塞到超时。得到就绪状态后进行真正的操作可以在用一个线程里执行,也可以启动线程执行(比如使用线程池)
串行 vs 多线程+锁 vs 单线程+多路io复用(redis)

5.2 redis 健(key)

keys * 才看看当前库所有的key

exists key的名称 1表示在 0表示不存在

type key key的类型

del key 删除 key

expeire key 设置过期时间

ttl key 查看还有多久过期 -1 永不过期 -2过期

select 数字 表示切换库 select 1 切换到1号库

dbsize 查看当前数据库的key的数量

flushdb 清空当前库

flushall 清空所有库

5.2常用数据类型操作 string

string字符串是redis的最基本的啥类型,一个key对应一个value ,string类型是二进制安全的,意味着redis的string可以包含任何数据,比如jpg 图片或者序列化对象

基本命令:

set命令:

set k1 v100 为k1设置值为v100

get k1 查询k1的值

append k1 abc k1的值为v100abc

strlen 获取值的长途

setnx 只有在key不存在的时候,才能成功 setnx k1 v1 返回 0 为不成功 为1 表示成功

incr 将key中存储的数字值增1

decr 将key中存储的数字值减1

** 注意redis中是原子操作:因为redis是单线程+多路io复用**

5.3思考 java中的 i++是否为原子操作

下一波命令:

mset:设置多个key value

mget:设置多个value

msetnx: 任何一个存在,则所有都失败

getrange:获取指定大小的范围的值

setrange 在指定的范围设置值

5.3redis列表

单键多值

redis列表是简单的字符串列表,按照插入顺序飘絮。你可以添加一个元素到列表的头部(左边)或者尾部(右边),它的底层为一个双向列表,

常用命令:

lpush:左边添加value值

rpush: 右边添加value值

lrange: 从左边开始取(到范围为止)

lpop/rpop 从左/右吐出一个值。值在健在,值光健亡

lrange 获取指定范围的值

lindex 按照索引下表获取元素

llen 获取列表长度

linsert before 在的后面插入插入值

lset 将列表key下表为index的值替换为value

5.4 集合 set

set和list差不多,主要是会自动排重,而且数无序的。redis的set是string类型的无序集合,他底层其实是一个value为null的hash表,所以添加、删除、查找的复杂度都是0(1)。

常用命令:

sadd:将一个或多个元素加入到集合可以在指那个,已经存在的member元素将被忽略

smembers:取出所以集合的值

sismember:是否含有该值

scard:返回该集合的元素个数

srem 删除集合中的某个元素

spop:随机从该集合吐出一个值

srandmember:随机从该集合中取出n个值,不会从改集合中删除。

smove:把集合中的某一个值从一个集合移动到另一个集合

**sinter 返回两个集合的交集元素

**sunion;返回两个集合的并集元素 共同好友功能

**sdiff:返回两个集合的差集元素

5.4redis-hash类型

redis hash 是一种键值对的类型

redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。,类似于java中的Map<String,Object>

命令:

hset 给集合中的键赋值

hget 获取某个filed的值

hmset 批量设置多个filed值

hexists:判断是否存在这个字

hkeys:查询所有的filed值

hvals:查询所有的value

hincrby:加一

hsexnx 加数据的

5.5 zset数据结构

redis 有序集合zset与普通的集合set非相似,是一个没有重复的有序集合

底层结构:

命令:

zset的两种实现方式

ziplist(压缩链表):满足以下两个条件的时候

元素数量少于128的时候

每个元素的长度小于64字节

skiplist(跳跃链表):不满足上述两个条件就会使用跳表,具体来说是组合了map和skiplist

map用来存储member到score的映射,这样就可以在O(1)时间内找到member对应的分数

skiplist按从小到大的顺序存储分数

skiplist每个元素的值都是[score,value]对

zdd:添加内容(一个或者多个)

zrange:返回有序集key中,下标在之间的元素

zrangbyscore :取指定区域的方法

zrevrangbyscore:与上述的排序方式相反

zincrby: 为score值进行增加操作

zrem:删除某个 指定的元素

zcount:统计功能

redis五种数据结构详解的更多相关文章

  1. redis 五种数据结构详解(string,list,set,zset,hash)

    redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...

  2. redis 五种数据结构详解(string,list,set,zset,hash),各种问题综合

    redis 五种数据结构详解(string,list,set,zset,hash) https://www.cnblogs.com/sdgf/p/6244937.html redis 与 spring ...

  3. 【Redis】redis 五种数据结构详解(string,list,set,zset,hash)

    redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...

  4. Redis 五种数据结构详解(string,hash,list,set,zset)

    一.五种数据结构: 1. String--字符串 String 数据结构是简单的 key-value 类型,value 不仅可以是 String,也可以是数字(当数字类型用 Long 可以表示的时候e ...

  5. 2.Redis五种数据结构

    2.Redis五种数据结构2.1 预备2.1.1 全局命令2.1.2 数据结构和内部编码2.1.3 单线程架构2.2 字符串2.2.1 命令2.2.2 内部编码2.2.3 典型使用场景2.3 哈希2. ...

  6. Redis(一)、Redis五种数据结构

    Redis五种数据结构如下: 对redis来说,所有的key(键)都是字符串. 1.String 字符串类型 是redis中最基本的数据类型,一个key对应一个value. String类型是二进制安 ...

  7. rabbitmq五种模式详解(含实现代码)

    一.五种模式详解 1.简单模式(Queue模式) 当生产端发送消息到交换机,交换机根据消息属性发送到队列,消费者监听绑定队列实现消息的接收和消费逻辑编写.简单模式下,强调的一个队列queue只被一个消 ...

  8. Redis五种数据结构(Windows Server)

    1.Redis的五种数据结构 这里推荐大家在命名redis的key的时候最好的加上前缀,并且使用 :来分割前缀 ,这里在使用可视化工具查看的时候就比较好区分,比如我的的前缀是 Demo:test:(一 ...

  9. Redis五种数据结构简介

    Redis五种结构 1.String 可以是字符串,整数或者浮点数,对整个字符串或者字符串中的一部分执行操作,对整个整数或者浮点执行自增(increment)或者自减(decrement)操作. 字符 ...

  10. Android特效 五种Toast详解

    Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失.而且Toast主要用于向用户显示提示消 ...

随机推荐

  1. git merge和git rebase总结

    dev分支 * da349ef (dev) e * 75350bc d * 63cbbb8 c * c6509a5 b * 13405af a 文件可能会发生冲突,需要解决一下 aaaaaaaaa b ...

  2. Lua脚本在Redis事务中的应用实践

    使用过Redis事务的应该清楚,Redis事务实现是通过打包多条命令,单独的隔离操作,事务中的所有命令都会按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的命令请求所打断.事务中的命令要么全部 ...

  3. Elasticsearch与MySQL对应关系表

    MySQL 中的数据库(DataBase),等价于 ES 中的索引(Index). MySQL 中一个数据库下面有 N 张表(Table),等价于1个索引 Index 下面有 N 多类型(Type). ...

  4. PostgreSQL 删除表格

    PostgreSQL 使用 DROP TABLE 语句来删除表格,包含表格数据.规则.触发器等,所以删除表格要慎重,删除后所有信息就消失了. 语法 DROP TABLE 语法格式如下: DROP TA ...

  5. 监控elasticsearch

    转载自:https://cloud.tencent.com/developer/article/1655489 注意:上半截跟下半截是采用的不同的方式,建议采用下半截的方式,上半截的方式据说获取不到数 ...

  6. STM32F0单片机基于Hal库温控智能风扇

    一.项目概述 设计采用STM32F0系列单片机做主控芯片,通过DHT11采集温湿度,将温度显示在OLED 屏幕上.根据温度的不同,利用STM32对风扇进行调速,总体硬件设计如下图所示 1.效果展示 2 ...

  7. 我的 Kafka 旅程 - Producer

    原理阐述 Producer生产者是数据的入口,它先将数据序列化后于内存的不同队列中,它用push模式再将内存中的数据发送到服务端的broker,以追加的方式到各自分区中存储.生产者端有两大线程,以先后 ...

  8. 工厂想采购一套信息化生产执行系统mes,不知道用哪家比较好?

    好的信息化生产执行系统MES多的是,但是否适用于贵工厂那就不得而知了,要知道,不同行业.不同产品.不同规模的工厂用同一套系统效果呈现出来都不一样的,所以匹配很重要,个性化差异化.变化性等决定了一个工厂 ...

  9. 改善C#程序的方法-1 操作字符串

    正确操作字符串 引言: 字符串是使用很频繁的一种数据类型. 如果使用不慎,则会为一次字符串操作所带来的额外性能开销而付出代价. 下面从这几个方面来探讨如何正确操作字符串: 1.确保尽量少的装箱,尽可能 ...

  10. 关于IDEA中Tomcat中文乱码的解决方案

    进入Tomcat/config文件夹下,打开编辑logging.properties 然后查看该文件内是否存在java.util.logging.ConsoleHandler.encoding = U ...