Redis主要支持的数据类型有5种:String ,Hash ,List ,Set ,和 Sorted Set。
一:String
1.set key value [EX n](过期时间) [NX](key 已存在则不覆盖) 插入数据(key已存在,默认覆盖)
2.get key 获取数据
3.append key "string" 追加数据
4.del key 删除数据
5.getset key newValue 先获取原有值,再设置新值
6.incrby key n(n为数字) 数据加加法运算 incr key 为加一
7.decrby key n 数据减法运算 decr key 为减一
8.strlen key 获取str长度,key或value不存在返回0
9.setex key second(时间) value 设值,并指定过期时间
10.setnx key value 插入数据,存在则不执行操作,并返回0;不存在则插入数据,并返回1
11.setarrange key index value 从指定位置开始替换
12.getrange key startIndex end 截取字符串,end等于-1时返回整个字符串
13.mget key [key2 key3 ...] 批量读取
14.mset key value [key2 value2...] 批量修改
15.msetnx key value [key2 value2] 批量修改,当有key已存在时,所有插入不执行
二:List
List类型数据结构为链表。支持分页查询,排序;可以对List进行监听(blpop\brpop\blpoprpush)
1.rpush listKey value [value2 value3...] 向key为listKey的List中从右侧插入数据
2.lpush listKey value [value2 value3...] 向key为listKey的List中从左侧插入数据
3.linsert listKey BEFORE|AFTER pivot value 在key为listKey的List中查找值为pivot的数据,在其前|后插入一条值为value的数据
4.lrange listKey start stop 查看list数据,start开始位置、stop结束位置
5.lpop listKey 从list左侧移除一条数据并返回
6.rpop listKey 从list右侧移除一条数据并返回
7.llen listKey 查看list长度
8.lindex listKey index 获取给定位置数据
9.lset listKey index value 修改制定索引位置的值
10.rpoplpush A B 将A中尾元素添加到B的头元素中
11.blpop\brpop listKey time 从list左\右边移除一个数据,若list为空,则等待list中插入数据为止,等待时间为time秒,如果time设置为0表示一直阻塞,直到list中有数据阻塞结束
12.brpoplpush A B time 将A中尾元素添加到B的头元素中,若A为空,则阻塞,等待时间为time秒,如果time设置为0表示一直阻塞,直到list中有数据阻塞结束
三:Set
Set数据结构为哈希表,无重复数据。
1.sadd mySet member 向key为mySet的Set中添加成员member
2.smembers mySet 获取set中全部元素
3.sismember mySet value 判断mySet中是否存在value,是1否0
4.srem member1 [member2...] 删除元素,返回删除个数
5.scard mySet 查看mySet中元素数量
6.srandmember mySet 随机获取一个mySet中的元素
7.spop 随机删除一个元素并返回
8.smove mySet mySet2 member 将mySet中member元素移动到mySet2中
9.sinter mySet mySet2 [mySet3...] 求交集
10.sunion mySet mySet2 [mySet3...] 求并集
11sdiff mySet mySet2 [mySet3...] 求差集
四:Hash
Hash是一个field和value的映射表,一个key可以对应多个field,一个field对应一个value。适合存储对象。
1.hset|hsetnx myHash field value 向myHash中添加一堆映射field,value。若field存在则覆盖原有值。(hsetnx 若field存在则取消操作)
2.hget myHash key 读取myHash中key对应的value
3.hlen myHash 获取myHash中的field数量
4.hexits myHash field 判断myHash中是否存在field,是1否0
5.hdel myHash field [field2...] 删除myHash中的field字段
6.hincrby myHash field n myHash中field字段的value加n(负数为减)
7.hmset myHash field1 value1 [field2 value2...] 批量插入
8.hmget myHash field [field2...] 批量获取
9.hgetall myHash 获取myHash中所有键值对
10.hkeys myHash 获取myHash中所有field
11.hvals myHash 获取myHash中所有values
五:Zset
Zset类型与Set类型一样不能有重复数据,但Zset是有序的,每个成员都有一个“分数”与之对应。
1.zadd myzset score member [score2 member2...] 向myzset中添加分数为score的member
2.zcard myzset 查看myzset中的成员个数
3.zrange myzset start stop [withscores] 查看制定范围内的成员,withssores为输出结果带分数
4.zrank myzset member 获取myzset中member的下标位置,不存在则返回null
5.zcount myzset min max 获取分数从min到max的成员个数
6.zrem myzset member [member2...] 删除成员
7.zscore myzset member 获取指定成员的分数
8.zincrby myzset n member 将member的分数加n
9.zrangebyscore myzset min max 获取分数从min到max的members
10.zremrangebyscore myzset min max 删除分数从min到max的成员
11.zremrangebyrank myzset start stop 删除下标从start到stop的成员
12.zrevrange myzset start stop 倒叙排序数据,输出
13.revrangebyscore myzset max min [withscores][limit offset count] 按分数倒序输出
14.zunionstore Cset n Aset Bset[Dset...] 将Aset、Bset的并集添加到Cset中(n为集合数)
15.zinterstore Cset n Aset Bset[Dset...] 将Aset、Bset的交集添加到Cset中(n为集合数)
六:Key操作
1.del key [key2...] 输出key
2.exists key 判断key是否存在,是1否0
3.move key db 将key移动到指定数据库
4.rename key newkey 重命名,若newkey已存在则覆盖原值
5.expire key seconds 设置过期时间(相对于当前时间)
6.expireat key seconds 设置过期时间(相对于1970/1/1)
7.ttl key 返回过期时间,当key不存在时(包括已过期的key)返回-2,永久不过期的返回-1
8.persist key 清楚key的过期时间,使其持久化
9.randomkey 随机返回一个key
10.type key 返回key对应的数据类型
七:事务操作
需要注意的是,redis的事务中,如果是一条命令语法出错,则事务中所有命令都不执行;如果是运行时错误,redis无法发现,其他命令照常执行。
1.multi 开启事务
2.exec 执行事务
3.discard 回滚事务
4.watch key[key2...] 监控key,如果被监控的key在事务之前发生修改,且紧接着的一个事务中包含该key,则该事务将被回滚。(紧邻的事务执行过后,监控自动取消)
5.unwatch key 取消监控
其他:
1.flushdb 清楚当前数据库的全部数据
2.select db 切换当前数据库
redis中为了将数据分类存储,可以开启多个redis服务,也可以选择将数据存在不同的数据库中。redis是支持多数据库的,且数据库由一个整数索引标识,可以在配置文件中控制数据库的数量
databases num ,num为数据库数量。默认值16,且默认连接到的数据库所以为0。八:启动停止
1.redis-server [配置文件路径(可选,默认为根目录下redis.conf)] 启动redis服务
2.redis-cli shutdown 停止redis服务
3.redis-cli [-p 6379] 打开客户端
4.脚本方式启动
九:配置文件
1.port 6379 监听端口
2.logfile "/home/root/logs/redis.log" 日志文件
3.dir /home/root/data/redisData 持久化文件存放位置
4.daemonize no 是否默认后台运行
5.save 900 1 900秒后至少有一个key被更改则快照保存到硬盘
save 300 10
save 60 10000
三个save为“或”的关系,如果不想持久化则删除所有save即可。
Redis快照实现过程:(快照方式即为RDB)
- Redis使用fork函数复制一份当前进程(父进程)的副本(子进程);
- 父进程继续接收并处理客户端发来的命令,而子进程开始将内存中的数据写入硬盘中的临时文件;
- 当子进程写入完所有数据后会用该临时文件替换旧的RDB文件,至此一次快照操作完成。
6.appendonly yes AOF方式的持久化
7.appendfilename appendonly.aof 配置aof文件名
8.appendfsync always/everysec/no 设置同步方式,每次写入、每秒、每30秒
十:备份与还原
自动,RDB方式与AOF方式对比:
RDB:启动时redis直接将RDB文件中的数据载入内存,速度很快,且不必时刻向硬盘写数据,但是一旦redis发生异常退出,则上一次快照之后的数据都将丢失。
AOF:每执行一条更改都会将该命令写入硬盘中的AOF文件,启动时redis会逐个执行AOF文件中的命令来将数据加载到内存。速度较慢,但是不会丢失数据。
手动:
save/bgsave 发送命令对当前数据库进行快照。
save由主进程进行快照,会阻塞其他请求;
bgsave会fork子进程进行快照,即后台执行。
还原只需将备份文件拷贝到数据目录,启动服务
十一:启动脚本:utils/redis_init_script
相关推荐
Redis 使用教程详解 Redis 是一个高性能的 NoSQL 键值存储数据库,广泛应用于缓存、任务列表、网站访问统计数据、过期处理、应用排行榜、分布式集群架构中的 session 分离等领域。下面是 Redis 的详细使用教程。 ...
首先,我们要理解Redis的基本操作。Redis支持多种数据类型,如字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。在直接使用Redis源码进行交互时,你需要创建一个Socket连接到...
Redis 配置详解 Redis 是一个开源的、基于内存的数据结构存储系统,常用于数据库、缓存、消息队列等场景。然而,正确地配置 Redis 是非常重要的,否则可能会导致性能下降、数据丢失等问题。本文将详细讲解 Redis ...
### Redis 命令详解 #### 一、前言与基础知识 Redis 是一款开源的、高性能的键值存储系统,支持多种数据结构如字符串、散列、列表、集合及有序集合等。它以其低延迟、高并发访问能力而著称,并且支持数据持久化、...
Redis实战详解 Redis是一个开源的、先进的key-value存储系统,用于构建高性能、可扩展的Web应用程序解决方案。Redis官方网站是http://www.redis.io/。Redis有三个主要特点:首先,Redis是一个完全在内存中保存数据...
5. **Redis操作**:通过Spring的`JedisTemplate`或`StringRedisTemplate`进行Redis的数据操作,如设置、获取、删除键值对,以及列表、集合、哈希表等数据结构的操作。 6. **缓存策略**:设计合适的缓存策略,比如...
基于Spark的机器学习资料63、后台服务工具Redis详解Redis操作命令 基于Spark的机器学习资料63、后台服务工具Redis,是一个高性能的基于内存的数据存储系统,支持五种基本数据类型:string(字符串)、hash(哈希)...
### Redis新手入门详解 #### 一、Redis简介与特点 Redis是一个开源的键值(Key-Value)数据库系统,因其高效性和灵活性,在数据处理领域占据着重要地位。它不仅仅局限于简单的键值存储,还提供了多种复杂的数据结构...
Redis 信息详解 Redis 是一个开源的、基于内存的数据结构存储系统,可以用作数据库、消息代理、缓存等。Redis 的配置文件中包含了许多重要的配置项,这些配置项对 Redis 的性能和稳定性都有着重要的影响。 Server ...
### Redis启动过程详解 #### 一、概述 Redis是一款高性能的键值存储系统,它具有内存数据存储、网络通信及复杂的数据结构操作等功能。本文旨在深入解析Redis的启动过程,帮助读者更好地理解其内部机制。文章主要...
如果一切顺利,你应该能看到一个Redis命令行提示符,可以输入各种Redis命令进行操作。 请注意,虽然这个教程提到了Java标签,但Redis本身并不需要Java环境。然而,如果你的项目中使用Java与Redis交互,你需要安装...
### Redis配置详解与企业级项目应用架构 #### Redis理论基础和基本配置 Redis是一个非常流行的开源数据结构存储系统,它采用ANSI C语言编写而成,能够支持网络通信,并且可以根据需求选择内存或磁盘作为主要存储...
### Redis配置参数详解 Redis是一种高性能的键值对存储系统,广泛应用于缓存、消息队列等多种场景。本文将深入解读Redis配置文件中的关键参数及其作用,帮助读者更好地理解和优化Redis配置。 #### 1. 守护进程模式...
Redis的一个显著特性是其值的数据类型上的原子性操作,这使得Redis可以实现消息队列、计数器、缓存等高级功能。例如,对于字符串类型的值,可以执行追加字符串(APPEND命令)以及原子性的加法(INCR命令)和减法操作...
指定 Redis 进程的 PID 文件路径,用于管理 Redis 服务的启动、停止等操作。 4. **port**: Redis 默认监听的端口号是 6379,可自定义以避免与其他服务冲突。 5. **tcp-backlog**: 定义已完成队列(即已建立...
StackExchange.Redis 是一个 Redis 客户端库,提供了对 Redis 的访问和操作。 一、添加引用包 在使用 Redis 之前,需要在项目中添加 StackExchange.Redis NuGet 包。可以通过 NuGet 包管理器来安装该包。安装完成...
【Lettuce-Redis高级客户端详解1】 Lettuce是一个高度优化的Java编写的Redis驱动程序,它在Redis社区中获得了广泛的认可,特别是在Spring生态体系中。作为Spring-Data-Redis的一部分,Lettuce取代了早期版本的Jedis...
### Linux 下 Redis 安装与配置详解 #### 一、Redis 概述 Redis 是一款开源的、基于键值对的高性能数据结构存储系统。它不仅提供了类似 memcached 的高速缓存特性,还具备数据持久化的功能。不同于 memcached,...
【Redis 安装详解】 Redis 是一款高性能的键值存储系统,它不仅具有与 Memcached 类似的内存存储特性,还能实现数据持久化,提供丰富的数据结构如字符串、链表、集合和有序集合,并且支持在服务器端计算集合的并、...
### Redis集群详解 #### 一、Redis集群简介 Redis 是一款高性能的键值对存储系统,因其出色的性能表现被广泛应用于缓存、消息队列等多个领域。随着业务规模的不断扩展,单一节点往往无法满足高可用性和负载均衡的...