数据操作

  • redis是key-value的数据,所以每个数据都是一个键值对
  • 键的类型是字符串
  • 值的类型分为五种:
    • 字符串string
    • 哈希hash
    • 列表list
    • 集合set
    • 有序集合zset
  • 接下来逐个介绍操作各类型的命令

string

  • string是redis最基本的类型
  • 最大能存储512MB数据
  • string类型是二进制安全的,即可以为任何数据,比如数字、图片、序列化对象等

命令

设置

  • 设置键值
set key value
  • 设置键值及过期时间,以秒为单位
SETEX key seconds value
  • 设置多个键值
MSET key value [key value ...]

获取

  • 根据键获取值,如果不存在此键则返回nil
GET key
  • 根据多个键获取多个值
MGET key [key ...]

运算

  • 要求:值是数字
  • 将key对应的value加1
INCR key
  • 将key对应的value加整数
INCRBY key increment
  • 将key对应的value减1
DECR key
  • 将key对应的value减整数
DECRBY key decrement

其它

  • 追加值
APPEND key value
  • 获取值长度
STRLEN key

键的命令

  • 查找键,参数支持正则
KEYS pattern
  • 判断键是否存在,如果存在返回1,不存在返回0
EXISTS key [key ...]
  • 查看键对应的value的类型
TYPE key
  • 删除键及对应的值
DEL key [key ...]
  • 设置过期时间,以秒为单位
  • 创建时没有设置过期时间则一直存在,直到使用使用DEL移除
EXPIRE key seconds
  • 查看有效时间,以秒为单位
TTL key

hash

  • hash用于存储对象,对象的格式为键值对

命令

设置

  • 设置单个属性
HSET key field value
  • 设置多个属性
HMSET key field value [field value ...]

获取

  • 获取一个属性的值
HGET key field
  • 获取多个属性的值
HMGET key field [field ...]
  • 获取所有属性和值
HGETALL key
  • 获取所有的属性
HKEYS key
  • 返回包含属性的个数
HLEN key
  • 获取所有值
HVALS key

其它

  • 判断属性是否存在
HEXISTS key field
  • 删除属性及值
HDEL key field [field ...]
  • 返回值的字符串长度
HSTRLEN key field

list

  • 列表的元素类型为string
  • 按照插入顺序排序
  • 在列表的头部或者尾部添加元素

命令

设置

  • 在头部插入数据
LPUSH key value [value ...]
  • 在尾部插入数据
RPUSH key value [value ...]
  • 在一个元素的前|后插入新元素
LINSERT key BEFORE|AFTER pivot value
  • 设置指定索引的元素值
  • 索引是基于0的下标
  • 索引可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素
LSET key index value

获取

  • 移除并且返回 key 对应的 list 的第一个元素
LPOP key
  • 移除并返回存于 key 的 list 的最后一个元素
RPOP key
  • 返回存储在 key 的列表里指定范围内的元素
  • start 和 end 偏移量都是基于0的下标
  • 偏移量也可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素
LRANGE key start stop

其它

  • 裁剪列表,改为原集合的一个子集
  • start 和 end 偏移量都是基于0的下标
  • 偏移量也可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素
LTRIM key start stop
  • 返回存储在 key 里的list的长度
LLEN key
  • 返回列表里索引对应的元素
LINDEX key index

set

  • 无序集合
  • 元素为string类型
  • 元素具有唯一性,不重复

命令

设置

  • 添加元素
SADD key member [member ...]

获取

  • 返回key集合所有的元素
SMEMBERS key
  • 返回集合元素个数
SCARD key

其它

  • 求多个集合的交集
SINTER key [key ...]
  • 求某集合与其它集合的差集
SDIFF key [key ...]
  • 求多个集合的合集
SUNION key [key ...]
  • 判断元素是否在集合中
SISMEMBER key member

zset

  • sorted set,有序集合
  • 元素为string类型
  • 元素具有唯一性,不重复
  • 每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序
  • 元素的score可以相同

命令

设置

  • 添加
ZADD key score member [score member ...]

获取

  • 返回指定范围内的元素
ZRANGE key start stop
  • 返回元素个数
ZCARD key
  • 返回有序集key中,score值在min和max之间的成员
ZCOUNT key min max
  • 返回有序集key中,成员member的score值
ZSCORE key member

发布订阅

  • 发布者不是计划发送消息给特定的接收者(订阅者),而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅
  • 订阅者对一个或多个频道感兴趣,只需接收感兴趣的消息,不需要知道什么样的发布者发布的
  • 发布者和订阅者的解耦合可以带来更大的扩展性和更加动态的网络拓扑
  • 客户端发到频道的消息,将会被推送到所有订阅此频道的客户端
  • 客户端不需要主动去获取消息,只需要订阅频道,这个频道的内容就会被推送过来

消息的格式

  • 推送消息的格式包含三部分
  • part1:消息类型,包含三种类型
    • subscribe,表示订阅成功
    • unsubscribe,表示取消订阅成功
    • message,表示其它终端发布消息
  • 如果第一部分的值为subscribe,则第二部分是频道,第三部分是现在订阅的频道的数量
  • 如果第一部分的值为unsubscribe,则第二部分是频道,第三部分是现在订阅的频道的数量,如果为0则表示当前没有订阅任何频道,当在Pub/Sub以外状态,客户端可以发出任何redis命令
  • 如果第一部分的值为message,则第二部分是来源频道的名称,第三部分是消息的内容

命令

  • 订阅
SUBSCRIBE 频道名称 [频道名称 ...]
  • 取消订阅
  • 如果不写参数,表示取消所有订阅
UNSUBSCRIBE 频道名称 [频道名称 ...]
  • 发布
PUBLISH 频道 消息

示例

开启两个客户端,一个订阅,一个发布。

Redis学习笔记——数据类型及操作的更多相关文章

  1. Redis 学习(二) —— 数据类型及操作

    Redis支持string.list.set.zset.hash等数据类型,这一篇学习redis的数据类型.命令及某些使用场景. 一.String,字符串 字符串是 Redis 最基本的数据类型.一个 ...

  2. redis学习笔记——数据类型

    对象处理机制 Redis 构建了自己的类型系统,这个系统的主要功能包括:• redisObject 对象.• 基于redisObject 对象的类型检查.• 基于redisObject 对象的显式多态 ...

  3. Redis学习笔记(三)Redis支持的5种数据类型的总结

    继续Redis学习笔记(二)来说说剩余的三种数据类型. 三.列表类型(List) 1.介绍 列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的一段片段.列表类型内部是 ...

  4. Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash

    引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...

  5. Redis学习笔记(二) Redis 数据类型

    Redis 支持五种数据类型:string(字符串).list(列表).hash(哈希).set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用. String(字符串) ...

  6. Redis学习笔记~目录

    回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...

  7. Redis学习笔记4-Redis配置详解

    在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server   xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...

  8. Redis学习笔记(1)——Redis简介

    一.Redis是什么? Remote Dictionary Server(Redis) 是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value ...

  9. Redis学习笔记4-Redis配置具体解释

    在Redis中直接启动redis-server服务时, 採用的是默认的配置文件.採用redis-server   xxx.conf 这种方式能够依照指定的配置文件来执行Redis服务. 依照本Redi ...

随机推荐

  1. uitabbar 标题设置 button text attributes only respected for UIControlStateNormal

    uitabbar 标题设置 button text attributes only respected for UIControlStateNormal [[UITabBarItem appearan ...

  2. FLV视频播放:对未缓冲进度条实现拖动

    FLV视频播放:对未缓冲进度条实现拖动  流媒体开发 Add comments 八282010 一.文件准备 1.转码:ffmpeg 2.添加元数据:yamdi 二.网页播放器:jw player 使 ...

  3. Unity骨骼动力学应用

    原地址:http://blog.csdn.net/libeifs/article/details/7169794 开发环境 Window7 Unity3D  3.4.1 MB525defy Andro ...

  4. NGUI所见即所得之深入剖析UIPanel,UIWidget,UIDrawCall底层原理

    NGUI所见即所得之深入剖析UIPanel,UIWidget,UIDrawCall底层原理 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 之 ...

  5. javascript 闭包 通俗解释

    代码段 function foo(){ var a = 2; function bar(){ console.log(a); } return bar; } var baz = foo(); baz( ...

  6. 小米电视2S加量不加价,你还会买吗?

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...

  7. windows bat文件运行中文乱码

      windows bat文件运行中文乱码 CreationTime--2018年7月17日08点51分 Author:Marydon 1.情景展示 运行bat文件,里面的中文提示显示乱码 2.问题剖 ...

  8. CentOS6.5卸载默认安装的mysql5.1,并安装mysql5.5(亲测有效)

    感谢链接:https://jingyan.baidu.com/article/922554465e471a851648f4ed.html  指导. 1.安装前:CentOS6.5 yum 安装MySQ ...

  9. 【PHP】在目标字符串指定位置插入字符串

    PHP如何在指定位置插入相关字符串,例子:123456789变为1_23_456789插入"_"到指定的位置! (可以用作换行或者其他处理) 插入示例,具体思路在代码中有注释: & ...

  10. android的NDK和java进行本地socket通信

    关于Android应用与Framework的socket通信,相信关心这个问题的朋友们已经看过<android使用socket使底层和framework通信>这篇文章,美中不足的是作者只贴 ...