Redis学习笔记——数据类型及操作
数据操作
- redis是key-value的数据,所以每个数据都是一个键值对
- 键的类型是字符串
- 值的类型分为五种:
- 字符串string
- 哈希hash
- 列表list
- 集合set
- 有序集合zset
- 数据操作的全部命令,可以查看http://redis.cn/commands.html
- 接下来逐个介绍操作各类型的命令
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学习笔记——数据类型及操作的更多相关文章
- Redis 学习(二) —— 数据类型及操作
Redis支持string.list.set.zset.hash等数据类型,这一篇学习redis的数据类型.命令及某些使用场景. 一.String,字符串 字符串是 Redis 最基本的数据类型.一个 ...
- redis学习笔记——数据类型
对象处理机制 Redis 构建了自己的类型系统,这个系统的主要功能包括:• redisObject 对象.• 基于redisObject 对象的类型检查.• 基于redisObject 对象的显式多态 ...
- Redis学习笔记(三)Redis支持的5种数据类型的总结
继续Redis学习笔记(二)来说说剩余的三种数据类型. 三.列表类型(List) 1.介绍 列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的一段片段.列表类型内部是 ...
- Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash
引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...
- Redis学习笔记(二) Redis 数据类型
Redis 支持五种数据类型:string(字符串).list(列表).hash(哈希).set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用. String(字符串) ...
- Redis学习笔记~目录
回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...
- Redis学习笔记4-Redis配置详解
在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...
- Redis学习笔记(1)——Redis简介
一.Redis是什么? Remote Dictionary Server(Redis) 是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value ...
- Redis学习笔记4-Redis配置具体解释
在Redis中直接启动redis-server服务时, 採用的是默认的配置文件.採用redis-server xxx.conf 这种方式能够依照指定的配置文件来执行Redis服务. 依照本Redi ...
随机推荐
- Linux磁盘扩容
Linux磁盘扩容 fdisk -l # 查看硬盘信息 lvextend -L +1G /dev/mapper/vg00-lvroot 或者 lvextend -l +%FREE /dev/mappe ...
- 无法将“<s:SimpleText>”解析为组件执行
导入以前版本的flex代码时,报"无法将“<s:SimpleText>”解析为组件执行"错误: 后来在网上找到解决方案,即版本更新的一段话: 网址是:https://f ...
- 从头认识java-13.11 对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题?
这一章节我们继续类型擦除的话题,我们将通过对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题? 1.数组 package com.ray.ch13; public class Test { pub ...
- Negative seek offset的解决方法
ZIP文件解压的时候出现错误:Negative seek offset 原因是把rar文件直接改为ZIP. 必须要 重新压缩为ZIP文件 不能直接修改文件名.
- 关于android的设备管理器-DevicePolicyManager(二)
上回分析到了/data/system/device_policies.xml这个文件是在package change事件发生的时候变化的.那么来看看它的内容. 依据以往的经验.在/data/syste ...
- hdu2444 The Accomodation of Students(推断二分匹配+最大匹配)
//推断是否为二分图:在无向图G中,假设存在奇数回路,则不是二分图.否则是二分图. //推断回路奇偶性:把相邻两点染成黑白两色.假设相邻两点出现颜色同样则存在奇数回路. 也就是非二分图. # incl ...
- TP框架中session操作
TP中session操作 查看代码,OMG! 不应该是这样的
- 深入单例模式 - Java实现
单例模式可能是代码最少的模式了,但是少不一定意味着简单,想要用好.用对单例模式,还真得费一番脑筋.本文对Java中常见的单例模式写法做了一个总结,如有错漏之处,恳请读者指正. 饿汉法 顾名思义,饿汉法 ...
- (二)《Spring实战》——Spring核心
第二章:装配Bean 在Spring中,对象无需自己查找或创建与其所关联的其他对象.相反,容器负责把需要相互协作的对象引用赋予各个对象.例如,一个订单管理组件需要信用卡认证组件,但它不需要自己创建信用 ...
- (一)Hibernate初探之——单表映射
Hibernate充当持久化层 项目结构: 一.创建项目导入jar包. hibernate-core & junit4 & mysql-jdbc 二.src目录下 ...