`
千年松鼠
  • 浏览: 25845 次
文章分类
社区版块
存档分类
最新评论

Redis 操作详解

 
阅读更多

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)

  1. Redis使用fork函数复制一份当前进程(父进程)的副本(子进程);
  2. 父进程继续接收并处理客户端发来的命令,而子进程开始将内存中的数据写入硬盘中的临时文件;
  3. 当子进程写入完所有数据后会用该临时文件替换旧的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 使用教程详解 Redis 是一个高性能的 NoSQL 键值存储数据库,广泛应用于缓存、任务列表、网站访问统计数据、过期处理、应用排行榜、分布式集群架构中的 session 分离等领域。下面是 Redis 的详细使用教程。 ...

    redis使用详解

    首先,我们要理解Redis的基本操作。Redis支持多种数据类型,如字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。在直接使用Redis源码进行交互时,你需要创建一个Socket连接到...

    Redis配置详解.pdf

    Redis 配置详解 Redis 是一个开源的、基于内存的数据结构存储系统,常用于数据库、缓存、消息队列等场景。然而,正确地配置 Redis 是非常重要的,否则可能会导致性能下降、数据丢失等问题。本文将详细讲解 Redis ...

    redis命令详解

    ### Redis 命令详解 #### 一、前言与基础知识 Redis 是一款开源的、高性能的键值存储系统,支持多种数据结构如字符串、散列、列表、集合及有序集合等。它以其低延迟、高并发访问能力而著称,并且支持数据持久化、...

    redis实战详解.docx

    Redis实战详解 Redis是一个开源的、先进的key-value存储系统,用于构建高性能、可扩展的Web应用程序解决方案。Redis官方网站是http://www.redis.io/。Redis有三个主要特点:首先,Redis是一个完全在内存中保存数据...

    详解SSH框架和Redis的整合

    5. **Redis操作**:通过Spring的`JedisTemplate`或`StringRedisTemplate`进行Redis的数据操作,如设置、获取、删除键值对,以及列表、集合、哈希表等数据结构的操作。 6. **缓存策略**:设计合适的缓存策略,比如...

    基于Spark的机器学习资料63、后台服务工具redis:详解redis操作命令.pdf

    基于Spark的机器学习资料63、后台服务工具Redis详解Redis操作命令 基于Spark的机器学习资料63、后台服务工具Redis,是一个高性能的基于内存的数据存储系统,支持五种基本数据类型:string(字符串)、hash(哈希)...

    Redis新手入门详解

    ### Redis新手入门详解 #### 一、Redis简介与特点 Redis是一个开源的键值(Key-Value)数据库系统,因其高效性和灵活性,在数据处理领域占据着重要地位。它不仅仅局限于简单的键值存储,还提供了多种复杂的数据结构...

    redis info详解.pdf

    Redis 信息详解 Redis 是一个开源的、基于内存的数据结构存储系统,可以用作数据库、消息代理、缓存等。Redis 的配置文件中包含了许多重要的配置项,这些配置项对 Redis 的性能和稳定性都有着重要的影响。 Server ...

    Redis启动过程详解

    ### Redis启动过程详解 #### 一、概述 Redis是一款高性能的键值存储系统,它具有内存数据存储、网络通信及复杂的数据结构操作等功能。本文旨在深入解析Redis的启动过程,帮助读者更好地理解其内部机制。文章主要...

    Linux下Redis安装详解

    如果一切顺利,你应该能看到一个Redis命令行提示符,可以输入各种Redis命令进行操作。 请注意,虽然这个教程提到了Java标签,但Redis本身并不需要Java环境。然而,如果你的项目中使用Java与Redis交互,你需要安装...

    Redis配置详解和企业级项目应用架构

    ### Redis配置详解与企业级项目应用架构 #### Redis理论基础和基本配置 Redis是一个非常流行的开源数据结构存储系统,它采用ANSI C语言编写而成,能够支持网络通信,并且可以根据需求选择内存或磁盘作为主要存储...

    Redis配置参数详解

    ### Redis配置参数详解 Redis是一种高性能的键值对存储系统,广泛应用于缓存、消息队列等多种场景。本文将深入解读Redis配置文件中的关键参数及其作用,帮助读者更好地理解和优化Redis配置。 #### 1. 守护进程模式...

    Redis新手入门详解.pdf

    Redis的一个显著特性是其值的数据类型上的原子性操作,这使得Redis可以实现消息队列、计数器、缓存等高级功能。例如,对于字符串类型的值,可以执行追加字符串(APPEND命令)以及原子性的加法(INCR命令)和减法操作...

    redis配置详解.docx

    指定 Redis 进程的 PID 文件路径,用于管理 Redis 服务的启动、停止等操作。 4. **port**: Redis 默认监听的端口号是 6379,可自定义以避免与其他服务冲突。 5. **tcp-backlog**: 定义已完成队列(即已建立...

    【ASP.NET编程知识】.net core使用redis基于StackExchange.Redis.docx

    StackExchange.Redis 是一个 Redis 客户端库,提供了对 Redis 的访问和操作。 一、添加引用包 在使用 Redis 之前,需要在项目中添加 StackExchange.Redis NuGet 包。可以通过 NuGet 包管理器来安装该包。安装完成...

    Lettuce-Redis高级客户端详解1

    【Lettuce-Redis高级客户端详解1】 Lettuce是一个高度优化的Java编写的Redis驱动程序,它在Redis社区中获得了广泛的认可,特别是在Spring生态体系中。作为Spring-Data-Redis的一部分,Lettuce取代了早期版本的Jedis...

    linux下Redis安装详解.docx

    ### Linux 下 Redis 安装与配置详解 #### 一、Redis 概述 Redis 是一款开源的、基于键值对的高性能数据结构存储系统。它不仅提供了类似 memcached 的高速缓存特性,还具备数据持久化的功能。不同于 memcached,...

    (word完整版)linux下Redis安装详解.doc

    【Redis 安装详解】 Redis 是一款高性能的键值存储系统,它不仅具有与 Memcached 类似的内存存储特性,还能实现数据持久化,提供丰富的数据结构如字符串、链表、集合和有序集合,并且支持在服务器端计算集合的并、...

    Redis集群详解

    ### Redis集群详解 #### 一、Redis集群简介 Redis 是一款高性能的键值对存储系统,因其出色的性能表现被广泛应用于缓存、消息队列等多个领域。随着业务规模的不断扩展,单一节点往往无法满足高可用性和负载均衡的...

Global site tag (gtag.js) - Google Analytics