美文网首页
Redis API 理解与使用

Redis API 理解与使用

作者: 不二不二熊 | 来源:发表于2019-07-04 14:27 被阅读0次

本章节大致分为以下几种:

  1. 通用API的介绍
  2. 简单介绍5种不同数据结构
一、通用API
  • 查找key
keys 
[keys *] 遍历所有的key
[keys he*] 查找以he开头的key,类似于正则表达式的通配符概念
注意:keys命令为O(n)复杂度,一般不建议在生产环境中使用,建议使用scan命令,或者在热备
从节点中使用。
  • 查看redis存储keys数量
dbsize
[dbsize] 命令时间复杂度仅为O(1),因为redis在内部维护了一个计数器,因此,可以放心在生产
环境中使用。
  • 判断keys是否存在
exists key
[存在]:返回 1
[不存在]:返回 0
  • 删除key
del key :删除指定的 key 命令,可删除多个key
[成功]:返回 1
[不成功] :返回 0
  • 设置过期时间
expire key seconds 
[expire] :设置过期时间
[ttl] :查询剩余过期时间 :返回 -2 即代表key不存在,内部执行了del 命令
[persist] : 取消过期时间
  • 查看key类型
type key
O(1)级别命令
二、数据结构以及内部编码
内部编码
redis 是单线程为什么还这么快?
  1. 基于内存,响应速度很快
  2. 非阻塞IO
  3. 避免线程切换和竞态消耗

单线程使用注意事项:

  1. 一次只能执行一条命令
  2. 拒绝长(慢)命令
  3. 其实并不是完全单线程(AOF)

字符串

注意:字符串类型的value 不能超过 512M
场景:缓存/计数器/分布式锁

set key :设置
get key :获取
incr key : 对key 进行自增 1 ,如果之前不存在,则会创建key。
decr key : 自减操作
incrby key k :自增某个值
decrby key k :自减某个值
以上命令时间复杂度均为O(1)
setnx key value :假如key 不存在,才设置
setxx key value :key存在,才设置
setex :设置过期时间,原子操作
mget key1,key2:批量获取,原子操作(时间复杂度:O(n))
mset key1,key2 :批量设置(时间复杂度:O(n))
getset key newValue: set key newValue 并且返回旧的value
append key value :追加value 值
strlen key :返回字符串的长度(注意中文)
incrbyfloat key k:增加浮点数
getrange key start end :获取字符串指定下标的值
setrange key start end :指定下标获取新的值

hash

注意:field 不能相同,value可以相同

hget key field:获取hash key 的field对应的value值
hset  key field value :设置 hash key 
hdel key field :删除field 
hexists  key field : 判断field是否存在
hlen key : 获取field总数
hgetall key:获取所有的key field
hvals key: 获取hash key 对应所有field 的value
hkeys key : 获取所有的fileds
hmget key field1 field 2: 获取多个field值
hmset key field1 value1 field2 value2:批量设置多个field 值

list

有序,可以重复

rpush  key value1 value2 valueN:从列表右端插入
loush key value1 value2 valueN :从列表左端插入
linsert key before/after value  newValue :在list 指定的值前/后插入新元素,时间复杂度为O(n)
lpop key :从左边弹出一个元素
rpop key :从右边弹出一个元素
lrem key count value:根据count值,从列表中删除所有value相等的值,count 根据传值正负0删除的个数不同
ltrim key start end:根据索引范围修剪列表,时间复杂度为O(n)
lrange key start end (包含end) :获取列表指定所索引范围内的item
lindex key index:获取列表指定索引的item
llen  key :获取长度 (时间复杂度为O(1))
lset key index newValue :设置列表指定索引为新的值
可实现TimeLine 时间轴功能
blpop key timeout :lpop 阻塞版本,timeout是阻塞超时时间,0代表永远不阻塞
brpop key timeout :rpop 阻塞版本,timeout是阻塞超时时间,0代表永远不阻塞
[注意] lpush +lpop = Stack
lpush +rpop = Queue
lpush +brpop = message queue 

set

无序,无重复

sadd key element :向集合中添加元素,如果元素已经存在,则添加失败
srem key element :删除集合中的某个元素
scard :查看集合中的元素
sismember :判断元素是否存在于集合内
srandommember :从集合中随机取出一个元素,不会破坏原集合,可返回多个元素
smembers :取出集合中所有元素 (无序 ,使用需小心)
sinter :取交集
sdiff :取 差集
sunion :取并集

zset

有序集合,引入了score 字段来保持有序性。
集合:无序,可重复,element
有序集合:有序,不可重复,element +score,score 是可以重复的

zadd key score element (可以是多对):添加score 和element,时间复杂度为O(logn)
zscore key element  返回元素的分数
zincrby key  increScore element  增加或减少元素的分数
zcard key 返回元素的个数
zcount key minScore maxScore :返回有序集合内在指定分数范围内的个数
可以利用有序集合实现排行榜功能

相关文章

  • redis学习历程

    Redis初识 Redis安装与启动 Redis 常用API 理解与使用 Redis java客户端使用(单机版,...

  • Redis API 理解与使用

    本章节大致分为以下几种: 通用API的介绍 简单介绍5种不同数据结构 一、通用API 查找key 查看redis存...

  • Redis-5种基本类型结构

    笔记来自:《redis开发与维护》第二章 API的理解和使用主要内容:redis 5种数据结构:string、ha...

  • Redis-全局命令及键管理

    笔记来自:《redis开发与维护》第二章 API的理解和使用主要内容:全局命令、键管理、遍历键、数据库管理 全局命...

  • Redis——API的理解和使用

    一、全局命令1、查看所有键 2、键总数 3、检查键是否存在 4、删除键 5、键过期 6、键的数据结构类型 更多命令...

  • Redis Api的使用和理解

    1.通用命令 1.1通用命令 keys *遍历所有key keys [pattern]遍历符合通配符的所有key ...

  • Redis API的理解和使用

    一、通用命令 keys:显示所有符合条件的键(一般不在生产环境使用,时间复杂度O(n)速度慢) dbsize:计算...

  • Python 分布式缓存之Reids数据类型操作详解

    1、Redis API 1.安装redis模块 $ pip3.8install redis 2.使用redis模块...

  • Redis第2课:API 的理解与使用

    前面我们大致了解了 Redis 是什么,接下来我们就来使用 Redis。 如何使用 Redis?首先我们需要根据 ...

  • Laravel 之 Redis 模块

    简介 Redis模块负责与Redis数据库交互,并提供Redis的相关API支持; Redis模块提供redis与...

网友评论

      本文标题:Redis API 理解与使用

      本文链接:https://www.haomeiwen.com/subject/rkcccctx.html