一:字符串类型(string)

  - 应用场景

     - 用于常规计数,常规的 key-value 存储。

  - 常用操作

    • 常用操作
      
      设置一个值为(字符串类型) SET key value
      
      设置一个值并设置过期时间 SETEX key time value
      
      取出一个值为(字符串类型) GET key
      
      递增数字 INCR key
      
      获取字符串长度 STRLEN key

二:散列类型 (HASH)

  - 应用场景

    - 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

    - 存储部分变更的数据,如用户信息等。

    - 对于将对象存储成字符串而言,hash会占用更少的内存,并且可以更方便的存取整个对象.

  - 常用操作

    • 设置一个值为(HASH类型) HSET key field value
      
      取出一个值为(HASH类型) HGET key field
      
      一次获取多个值 HMGET key field [field ...]
      
      获取该HASH的全部字段和字段值 HGETALL key
      
      判断字段是否存在 HEXISTS key field
      
      当字段不存在时赋值 HSETNX key field value
      
      删除字段 HDEL key field [filed ....]
      
      只获取该字段名(全部) HKEYS key
      
      只获取该字段值(全部) HVALS key

三:列表 (LIST)

  - 应用场景

    - 由于 列表(list) 内部是由双向链表实现的,所以从头和尾获取和插入/读取是非常快的。

    - 不过也正是因为如此,通过索引获得元素的速度会很慢。

    - 由于 LIST 的特性,更适合做日志存储,消息队列等功能。

  - 常用操作

    • 向列表左端增加元素(列表类型) LPUSH key value
      
      向列表右端增加元素(列表类型) RPUSH key value
      
      从左端取出一个元素(等于在这个list中删除了这个元素) LPOP key
      从右端取出一个元素(等于在这个list中删除了这个元素) LPOP key 获得列表的总个数 LLEN number 获取列表片段 LRANGE key start stop 删除列表中的值 LREM key count value
        - 当 count > 时候,从列表左边删除 count 个 值为 value 的元素。
        - 当 count < 时候,从列表右边删除 count 个 值为 value 的元素。
        - 当 count = 时候,删除列表中所有值为 value 的元素。 通过索引查找元素,就和数组一样 LINDEX key index 通过索引为元素赋值 LSET key index value

四:集合 (SET)

  - 应用场景

    - 对于集合(set)来说,是无序但是有唯一性的,列表(list)是有序但是不唯一的。

    - 内部由 hash table 实现

    - set 就是一个集合,集合的概念就是一堆不重复值的组合。利用Redis提供的set数据结构,可以存储一些集合性的数据。set中的元素是没有顺序的。

   

  - 案例

    - 在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。

    - Redis还为集合提供了求交集、并集、差集等操作,可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。

  - 常用操作

    • 向集合添加一个或者多个元素 SADD key member [member ...]
      
      在集合内删除一个或者多个元素 SERM key member [member ...]
      
      获取集合内所有元素 SMEMBERS key
      
      查看集合内是否有该元素 SISMEMBER key member
      
      差级运算 SDIFF key [key ...] 例如 {,,} - {,,} = {} 
      
      交集运算 SINTER key [key ...] 例如 {,,} - {,,} = {,}
      
      并集运算 SUNION key [key ...] 例如 {,,} - {,,} = {,,,}
      
      获取集合中的个数 SCARD key

五:有序集合 (SORT SET)

  - 有序集合和集合相比

    - 有序集合(sorted set)增加了一个权重参数score。

  - 有序集合和列表相比

    - 二者都是有序的,都可以获得范围元素。

    - 有序集合比列表更费内存。

    - 有序集合是通过散列表和跳跃表实现的(这个目前不太懂)。

    - 列表中不能随意调整某个元素的位置,但是有序集合可以。

  - 应用场景

    - 比如要对一个学生的成绩排序,那么key就可以是学号,socore就可以是分数,那么在一进入队列时候,就已经进行了天然的排序。

    - 还可以用在有权重的队列上面,权重高的对列任务先执行。

  - 基本操作

    • 添加一个有序元素 ZAAD key score member
      获得一个元素的分数 ZSCORE key score
      获得排序之后的集合 ZRANGE key start stop

六:事务

  - Redis 里面的事务也是和命令一样,都是最小的执行单位。但是和数据库事务不同的是,Redis的事务不会被其他命令插入。一个事务是肯定会完成的。

  - 需要注意的是,在事务中

    - 如果出现了语法错误(指令不存在/命令错误...),那么错误指令之后的命令都不会执行。之前会执行。

    - 如果出现了错误的命令,比如使用散列的命令操作集合,Redis 也不会认为这是错误。会继续执行。

    - 但是不管出现了如上哪两种,都是会导致数据的异常,而Redis没有回滚机制,错了就是错了。

    - 为了避免错误,在使用时一定要注意使用的细节。

  

  - 基本语法

    • MULTI 开始事务
      
      EXEC 执行事务

七:过期时间

  - 设置过期时间之后,在使用SET,会消除这个键的过期时间,变为永久键

  - 基本语法

    • EXPIRE 键 时间(秒)
      PERSIST 键 (清除过期时间,即变为永久的)

《Redis 数据操作》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. python 模块会导入几次?猴子补丁为什么可以实现?

    一共三个文件 a.py内容是 print('被导入') x = 1 b.py内容是 import a a.x = 2 c.py内容是 import a import b print(a.x) 现在运行 ...

  2. python使用上下文对代码片段进行计时,非装饰器

    之前发过了一组常用的装饰器,包括了一个where_is_it_called的装饰器,可以计时和对入参和返回结果,被何处调用进行记录,十分强大. 这是用上下文,上下文的好处是,不需要抽成函数才能计时. ...

  3. HighCharts-动态配置csv格式数据

    场景: 开发一个大型热力图.官网示例中只有设置静态csv数据的例子.一直没有找到如何给热力图加载动态数据. 无奈,只好把要加载的数据拼接成csv格式后,供热力图加载. 拼接数据js:(dataArr是 ...

  4. .Net Core 部署到Ubuntu 16.04 中的步骤

    需要安装的工具 .Net Core Nginx反向代理服务器(相当于Windows下的IIS) Supervisor(进程管理工具) .Net Core安装方法请参阅 官方文档 安装完成后就可以在项目 ...

  5. MacOS install configure php-fpm

    php-fpm 是预装在mac os上的,你只需要配置就好了.这个服务监听9000端口. 1. 为配置文件准备一些目录 mkdir -p /usr/share/php/var/run mkdir -p ...

  6. A - 取(m堆)石子游戏

    m堆石子,两人轮流取.只能在1堆中取.取完者胜.先取者负输出No.先取者胜输出Yes,然后输出怎样取子.例如5堆 5,7,8,9,10先取者胜,先取者第1次取时可以从有8个的那一堆取走7个剩下1个,也 ...

  7. 阿里云服务器tomcat ./shutdown.sh关闭命令报错Could not contact localhost:8005. Tomcat may not be running.

    JDK1.8运行./shutdown 停止tomcat报错: 昨天购买了一个阿里云服务器,由于时间问题今天才来启动tomcat,启动的时候才发现跟我以前使用的服务器不太一样,去网上搜索了半天以为是to ...

  8. perl 函数

    文档 函数参数 sub hello{ $len = @args = @_; print "hello @args\n"; } hello('ajanuw', 'alone'); # ...

  9. 使用 vm 加载文件中的数据到变量里面

    .json 不能写注释, 还需要严格的双引号 或者使用 .json5 // test.db [ // name {name: 1} ] // test.js const fs = require('f ...

  10. h5 打造全屏体验 element.requestFullscreen()

    google打造全屏体验 https://developers.google.cn/web/fundamentals/native-hardware/fullscreen/ 以前github上的 ht ...