(二)redis API的理解和使用

一、全局命令

  1、keys *      查看所有键           时间复杂度为O(n),线上环境禁止使用

  2、dbsize        查看键总数

  3、rpush       插入一个列表类型的键值对    rpush  mylist  a b c d

  4、exists key     查看键是否存在,如果存在返回1,不存在返回0

  5、del  key [key ...]    删除键,返回成功删除键的个数

  6、expire      设置键过期           expire  hello 10  设置键10s过期  

  7、ttl        返回键的剩余过期时间,大于等于0    -1(没有设置过期时间)  -2(没有这个键)

  8、type key       键的数据结构类型        返回结果为string   list hash  set  zset 如果键不存在返回none

  9、object encoding key  查询内部编码

二、单线程模型

  1、内存访问

  2、非阻塞I/O,Redis使用epoll作为I/O多路复用技术的实现,再加上 Redis自身的事件处理模型将epoll中的连接、读写、关闭都转换为事件,不 在网络I/O上浪费过多的时间,如图2-6所示。因为redis采用的是单线程,但是读写操作又是阻塞式的,所以出现I/O多路复用技术,当一个文件处于读写阻塞状态时,不至于其他的读写操作也被阻塞

  3、减少线程的竞争与切换

三、字符串

  1、命令

  set(setnx(键必须不存在   setxx与nx相反   [ex seconds]  [px millisecond]))  get  mset  mget  incr(计数,当key中的值为数值时成功计数)  decr  incrby  decrby  incrbyfloat

  append  strlen(中文占用3个字符)  getset(先设置值,返回历史数值,当键为空的时候,返回nil)  setrange key offeset value(设置指定位置的字符)

  getrange key start end(获取指定位置的字符串)

  2、字符串编码

  int(8个字节的长整形)  embstr(小于等于39个字节的字符串)  raw(大于39个字节的字符串)

  3、使用场景

  缓存  计数  session共享  限速

四、哈希

  1、命令

  

五、列表

  1、命令

    

  2、内部编码

  ziplist(压缩列表)  linkedlist(链表)  quicklist

  3、使用场景

  消息队列(利用lpush和brpop)

  

六、集合

  1、命令

  

  2、内部编码

  setint(当元素不超过512个且值是整数类型时)  hashtable

  3、适用场景

  

七、有序集合

  1、有序集合、集合和列表之间的异同点

  

  2、命令

  

  3、内部编码

  ziplist(压缩列表):当有序集合的元素个数小于zset-max-ziplistentries配置(默认128个),同时每个元素的值都小于zset-max-ziplist-value配 置(默认64字节)

   skiplist(跳跃表)

  4、适用场景

  各排行榜

八、键管理

  1、重命名

  rename   renamenx  

  2、randomkey(随机返回一个键)  

  3、过期

  expire  expireat(设置秒级过期时间戳)  pexpire(设置秒级过期时间) pexpireat   persist(可以将键的过期时间清除) 

  4、setex(为set+expire的组合)

  5、迁移键

  move  dump+restore  migrate

  6、move、dump+restore和migrate之间的比较

  

  7、遍历键

  keys  scan  hscan  sscan  zscan

  数据库方面的命令

  dbsize  select index(reids默认0-15号数据库,通过select选择)  flushdb(清楚当前数据库)  flushall(清楚所有数据库)

  

  

  

  

    

原文地址:https://www.cnblogs.com/ffzzcommsoft/p/10113910.html

时间: 2024-10-07 14:53:06

(二)redis API的理解和使用的相关文章

Redis API的使用与理解

一.Redis 基础: 1.通用命令: keys [pattern]: keys *  #遍历所有key:keys he*  #以'he'开头的key: keys he[a-e]* #以'he'开头第三个字母是a-e之间: keys ph?  #'?'代码一位,以ph开头且字母是三位的key dbsize:计算key的总数 exists key :检查key是否存在(存在返回1,不存在返回0) del key [key...]:删除key(返回执行成功的条数) expire key second

【转】NoSQL初探之人人都爱Redis:(2)Redis API与常用数据类型简介

一.Redis API For .Net 首先,不得不说Redis官方提供了众多的API开发包,但是目前Redis官方版本不支持.Net直接进行连接,需要使用一些第三方的开源类库.目前最流行的就是ServiceStack.Redis这个开源项目,其在GitHub上的下载地址为:https://github.com/ServiceStack/ServiceStack.Redis 进入下载页面,点击“Download Zip”按钮,即可下载该API包.解压该Zip包后,其实我们所用到的只是其中的几个

Redis学习笔记(三) Redis API与常用数据类型简介

一.Redis中常用数据类型 由上一篇博客可知,Redis目前提供五种数据类型:string(字符串).list(链表).Hash(哈希).set(集合)及zset(sorted set)  (有序集合).现在,我们一一来看看这五种数据类型的基本使用方法.在开始介绍之前,我们先使用刚刚引入的Redis API建立一个Redis客户端对象,有了这个客户端对象,我们才能和Redis服务端进行通信,且看下面的一行代码.我们需要事先指定好Redis服务端的IP地址和端口号,然后根据这两个信息建立一个Re

NoSQL初探之人人都爱Redis:(2)Redis API与常用数据类型简介

http://www.cnblogs.com/edisonchou/p/3822211.html 一.Redis API For .Net 首先,不得不说Redis官方提供了众多的API开发包,但是目前Redis官方版本不支持.Net直接进行连接,需要使用一些第三方的开源类库.目前最流行的就是ServiceStack.Redis这个开源项目,其在GitHub上的下载地址为:https://github.com/ServiceStack/ServiceStack.Redis 进入下载页面,点击“D

vue2.0学习(二)-全局API

vue2.0学习(二)-全局API GitHub源码 https://github.com/sunnyguyan/VueDemo 1.Vue.directive自定义指令 一.什么是全局API? 全局API并不在构造器里,而是先声明全局变量或者直接在Vue上定义一些新功能,Vue内置了一些全局API,比如我们今天要学习的指令Vue.directive.说的简单些就是,在构造器外部用Vue提供给我们的API函数来定义新的功能 二.Vue.directive自定义指令 我们在第一季就学习了内部指令,

redis 单线程的理解

1. redis单线程问题 单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有网络请求,其他模块仍用了多个线程. 2. 为什么说redis能够快速执行 (1) 绝大部分请求是纯粹的内存操作(非常快速) (2) 采用单线程,避免了不必要的上下文切换和竞争条件 (3) 非阻塞IO - IO多路复用 3. redis的内部实现 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架.epoll中的读.写.关闭.连接都转化成了事件,然后利用epoll的多路复

Quartz教程二:API,Job和Trigger

原文链接 | 译文链接 | 翻译:nkcoder | 校对:方腾飞 本系列教程由quartz-2.2.x官方文档翻译.整理而来,希望给同样对quartz感兴趣的朋友一些参考和帮助,有任何不当或错误之处,欢迎指正:有兴趣研究源码的同学,可以参考我对quartz-core源码的注释(进行中). Quartz API Quartz API核心接口有: Scheduler – 与scheduler交互的主要API: Job – 你通过scheduler执行任务,你的任务类需要实现的接口: JobDeta

qnx:从API开始理解QNX -- 消息传递

从API开始理解QNX -- 消息传递    http://www.openqnx.com/chinese/viewtopic.php?f=5&t=2161 1. 频道与连接    Channel, Connect        server:        ChannelId = ChannelCreate(Flags);    client:        ConnectionId = ConnectAttach(Node, Pid, Chid, Index, Flag);        N

程序员谈话系列——关于redis的一些理解(二)

一,redis的数据类型都有什么? String hash list set sortedset HyperLogLog Pub/Sub 二,缓存雪崩,击穿,传统. 雪崩:一些热点数据都会做缓存,一般会同时进行定时任务刷新.如果key的失效时间时,大量的用户请求涌入会直接落到数据库上,数据库一般会报一下警,但很有可能没有反应就直接挂了.当然重启数据库也会直接被流量打死.比如如果打挂的是一个用户服务的库,那么依赖这个库的接口都会报错,如果不做熔断的话会瞬间挂到一片. 做法: 1,为了避免缓存雪崩,