热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java学习之——Redis入门

1Redis简介1.Redis:REmoteDIctionaryServer,远程字典服务.2.是一种以keyvalue形式存储数据的内存型数据库.以二进制的形式存放数据,以字符串

1 Redis 简介

1. Redis: REmote DIctionary Server, 远程字典服务.
2. 是一种以key=value形式存储数据的内存型数据库. 以二进制的形式存放数据, 以字符串的形式表现.
3. 内存型数据库的优点: 速度快, 效率高; 缺点: 内存容量较小, 存放数据有限, 字符串而言, 每个字符串最大512M, 断电会导致数据丢失.
4. Redis是一种NoSQL数据库(泛指非关系型数据库), Not only Sql.
5. 关系型数据库和非关系型数据库的区别:
> 关系型数据库: 在DBMS中, 数据的存储是通过关系表的形式存放的, 通过约束进行数据完整性的定义
> 非关系型数据库: 以其他形式存放数据, 常见的有Redis, MongoDB. 在数据高效访问时需要使用.
6. 通常是关系型数据库配合非关系型数据库一起使用.
7. Redis下载资源: http://download.redis.io/releases/
8. Redis的版本信息
奇数版本: 开发版, 不稳定
偶数版本: 正式版, 稳定
在测试时使用哪个版本无所谓, 但是在项目上线时要使用偶数版本.
Redis3.0.0是一个里程碑式的版本. 从3.0.0开始, Redis支持集群. crc16算法
9. Redis支持linux和windows两个版本的安装, windows版本不稳定.

2 Redis 特性

速度快

《Java学习之——Redis入门》
《Java学习之——Redis入门》
《Java学习之——Redis入门》
《Java学习之——Redis入门》
《Java学习之——Redis入门》
《Java学习之——Redis入门》

持久化(断电不丢失数据),支持持久化操作,可以进行 aof 及 rdb 数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段。

《Java学习之——Redis入门》
《Java学习之——Redis入门》

支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash 表)、set(集合)、

zset(排序 set)、hyperloglog(基数估算)

《Java学习之——Redis入门》
《Java学习之——Redis入门》
《Java学习之——Redis入门》
《Java学习之——Redis入门》

支持多种客户端语言

《Java学习之——Redis入门》
《Java学习之——Redis入门》

功能丰富

《Java学习之——Redis入门》
《Java学习之——Redis入门》

简单,单机版的Redis有2,3000行C语言代码,单线程

《Java学习之——Redis入门》
《Java学习之——Redis入门》
《Java学习之——Redis入门》
《Java学习之——Redis入门》

支持通过 Replication 进行数据复制,通过 master-slave 机制,可以实时进行数据的

同步复制,支持多级复制和增量复制,master-slave 机制是 Redis 进行 HA 的重要手段。

《Java学习之——Redis入门》
《Java学习之——Redis入门》

高可用,分布式

《Java学习之——Redis入门》
《Java学习之——Redis入门》

3 Redis的应用场景

《Java学习之——Redis入门》
《Java学习之——Redis入门》
《Java学习之——Redis入门》
《Java学习之——Redis入门》
《Java学习之——Redis入门》
《Java学习之——Redis入门》
《Java学习之——Redis入门》
《Java学习之——Redis入门》
《Java学习之——Redis入门》
《Java学习之——Redis入门》

Redis 数据类型

1 String(字符串)

Redis 字符串是字节序列。Redis 字符串是二进制安全的,这意味着他们有一个已知的

长度没有任何特殊字符终止,所以你可以存储任何东西,512 兆为上限

示例:
redis 127.0.0.1:6379> SET name kevin
OK
redis 127.0.0.1:6379> GET name
"kevin"

incr 让当前键值以 1 的数量递增,并返回递增后的值

incrby 可以指定参数一次增加的数值,并返回递增后的值

decr 让当前键值以 1 的数量递减 并返回递减后的值

decrby 可以指定参数一次递减的数值,并返回递减后的值

incrbyfloat 可以递增一个双精度浮点数

append 作用是向键值的末尾追加 value。如果键不存在则将该键的值设置为 value。返

回值是追加后字符串的总长度。

mget/mset 作用与 get/set 相似,不过 mget/mset 可以同时获得/设置多个键的键值

del 根据 key 来删除 value

flushdb 清除当前库的所有数据

2 Hash(hash 表)

《Java学习之——Redis入门》
《Java学习之——Redis入门》

Redis 的哈希是键值对的集合。 Redis 的哈希值是字符串字段和字符串值之间的映射,

因此它们被用来表示对象

《Java学习之——Redis入门》
《Java学习之——Redis入门》

3 List(链表)

《Java学习之——Redis入门》
《Java学习之——Redis入门》

Redis 的链表是简单的字符串列表,排序插入顺序。您可以添加元素到 Redis 的列表的

头部或尾部

示例:

redis 127.0.0.1:6379> lpush tutoriallist redis

(integer) 1

redis 127.0.0.1:6379> lpush tutoriallist mongodb

(integer) 2

redis 127.0.0.1:6379> lpush tutoriallist rabitmq

(integer) 3

redis 127.0.0.1:6379> lrange tutoriallist 0 10

1) “rabitmq”

2) “mongodb”

3) “redis

lpush key value 向链表左侧添加

rpush key value 向链表右侧添加

lpop key 从左边移出一个元素

rpop key 从右边移出一个元素

llen key 返回链表中元素的个数 相当于关系型数据库中 select count(*)

lrange key start end lrange 命令将返回索引从 start 到 stop 之间的所有元素。Redis 的列

表起始索引为 0。

lrange 也支持负索引 lrange nn -2 -1 如 -1 表示最右边第一个元素 -2 表示最右边第二

个元素,依次类推。

lindex key indexnumber 如果要将列表类型当做数组来用,lindex 命令是必不可少的。

lindex 命令用来返回指定索引的元素,索引从 0 开始

如果是负数表示从右边开始计算的索引,最右边元素的索引是-1。

Lset key indexnumber value 是另一个通过索引操作列表的命令,它会将索引为 index

的元素赋值为 value。

4 Set(集合)

《Java学习之——Redis入门》
《Java学习之——Redis入门》

Redis 的集合是字符串的无序集合。

示例:

redis 127.0.0.1:6379> sadd tutoriallist redis

(integer) 1

redis 127.0.0.1:6379> sadd tutoriallist mongodb

(integer) 1

redis 127.0.0.1:6379> sadd tutoriallist rabitmq

(integer) 1

redis 127.0.0.1:6379> sadd tutoriallist rabitmq

(integer) 0

redis 127.0.0.1:6379> smembers tutoriallist

1) “rabitmq”

2) “mongodb”

3) “redis”

sadd key value 添加一个 string 元素到,key 对应的 set 集合中,成功返回 1,如果元素已经

在集合中返回 0

scard key 返回 set 的元素个数,如果 set 是空或者 key 不存在返回 0

smembers key 返回 key 对应 set 的所有元素,结果是无序的

sismember key value 判断 value 是否在 set 中,存在返回 1,0 表示不存在或者 key 不存

srem key value 从 key 对应 set 中移除给定元素,成功返回 1,如果 value 在集合中不存

在或者 key 不存在返回 0

5 SortedSet(有序集合)zset

Redis 的有序集合类似于 Redis 的集合,字符串不重复的集合。

示例:

redis 127.0.0.1:6379> zadd tutoriallist 0 redis

(integer) 1

redis 127.0.0.1:6379> zadd tutoriallist 0 mongodb

(integer) 1

redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq

(integer) 1

redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq

(integer) 0

redis 127.0.0.1:6379> ZRANGEBYSCORE tutoriallist 0 1000

1) “redis”

2) “mongodb”

3) “rabitmq”

zadd key score value 将一个或多个 value 及其 socre 加入到 set 中

zrange key start end 0 和-1 表示从索引为 0 的元素到最后一个元素(同 LRANGE 命令

相似)

zrange key 0 -1 withscores 也可以连同 score 一块输出,使用 WITHSCORES 参数

zremrangebyscore key start end 可用于范围删除操作

6 Redis 中的其他命令

ping 测试 redis 是否链接 如果已链接返回 PONG

echo value 测试 redis 是否链接 如果已链接返回 echo 命令后给定的值

keys * 返回所有的 key 可以加*通配

exists key 判断 string 类型一个 key 是否存在 如果存在返回 1 否则返回 0

expire key time(s) 设置一个 key 的过期时间 单位秒。时间到达后会删除 key 及 value

ttl key 查询已设置过期时间的 key 的剩余时间 如果返回-2 表示该键值对已经被删除

persist 移除给定 key 的过期时间

select dbindex 选择数据库(0-15)

move key dbIndex 将当前数据库中的 key 转移到其他数据库中

dbsize 返回当前数据库中的 key 的数目

info 获取服务器的信息和统计

flushdb 删除当前选择的数据库中的 key

flushall 删除所有数据库中的所有 key

quit 退出连接


推荐阅读
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 【转】腾讯分析系统架构解析
    TA(TencentAnalytics,腾讯分析)是一款面向第三方站长的免费网站分析系统,在数据稳定性、及时性方面广受站长好评,其秒级的实时数据更新频率也获得业界的认可。本文将从实 ... [详细]
  • 数据库基本介绍
    1、数据库基本知识概念:数据库:database(DB),是一种存储数据的仓库数据库是根据数据结构组织、存储和 ... [详细]
  • MySQL:互联网公司常用 分库分表
    本文目录一、数据库瓶颈IO瓶颈CPU瓶颈二、分库分表水平分库水平分表垂直分库垂直分表三、分库分表工具四、分库分表步骤五、分库分表问题非partit ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • Java工程师书单(初级,中级,高级)
    简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序 ... [详细]
author-avatar
元元木樨_669
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有