Redis使用教程(一)

article/2025/10/13 12:05:08

Redis:单线程、高读写

redis数据库初识

Redis 简介
Redis 的安装配置
Redis 的常见操作
Redis 的数据类型
Redis 的事务控制
Java 操作 Redis 数据库

Redis简介

redis的作用
Redis:REmote DIctionary Server( 远程字典服务器 ) 是完全开源免费的,用 C 语言编写的,遵守 BSD协议,是一个高性能的 (key/value) 分布式内存数据库,基于内存运行并支持持久化的 NoSQL 数据库,是当前最热门的 NoSql 数据库之一 , 也被人们称为数据结构服务器

BSD协议简单的说就是开源自由最大化,不以商业为中心

redis的优缺点

优点

性能极高 – Redis能支持超过 100K+ 每秒的读写频率。
丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

缺点

是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。

Redis 的安装(Linux下)

1.下载wget -P /root/softdev http://download.redis.io/releases/redis-5.0.5.tar.gz

2.解压tar zxvf redis-5.0.5.tar.gz -C /root/redis

3.安装C语言环境yum install gcc-c++

4.切换到redis安装目录下.执行make命令

cd redis-4.0.10
make MALLOC=libc
make命令执行完成编译后,会在src目录下生成6个可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-rdb、redis-sentinel。

5.install安装
make install
6.配置redis随系统启动

进入redis解压目录,执行如下命令:
./utils/install_server.sh
在命令执行过程中会有一些相应的询问,选择默认配置回车即可,最后出现“Installation successful!”。
在这里插入图片描述
7.redis配置文件
redis默认配置文件:/etc/redis/6379.conf(70行)
修改配置文件,将bind 127.0.0.1修改为为 bind 0.0.0.0,使外网可以连接,修改后重启redis服务:systemctl restart redis_6379.service

8.启动redis服务

查看redis服务状态systemctl status redis_6379.service
开启redis服务:systemctl start redis_6379.service

关闭保护模式
在这里插入图片描述
设置密码
6.切换到目录下进行启动src/redis-server redis.conf 可检查是否存在ps -ef |grep redis
在这里插入图片描述

Redis 的常见操作

Keys *:指令 查看当前这个库中所有的key值
exists key 名字 : 判断某个 key 值是否存在 0 表示不存在 1 表示存在
move key 名字 数据库的索引下标: 将某个值移除到指定的库中
Redis 默认有 16 个库,我们可以通过修改 redis 配置文件 redis.conf 来改变库的数量
select 下标可以切换不同的数据库: select 下标
(了解)
flushdb : 删除当前库中所有的 key
flushall : 删除所有库的信息
Info:查看数据库的信息
expire key 名字 秒:设定指定的 key 的存活时间
ttl key 名字 : 查看当前的 key 还有多少存活时间 -1 表示永不过期,-2 表示已经过期
type key 名字 : 查看当前 key 的类型(key String,Object)

Redis的数据类型

String类型

SET key 名字 value 值: 设置单一键值对 (key 值相同会覆盖原来的值 , 类似于map 集合 )
GET key 名字:获取指定 key 的值
DEL key 名字:删除指定名称 key
APPEND key 名字 新值:在原有的值的基础上添加新的值
STRLEN key 名字 : 获取字符串的长度
(value 值必须是数字 )
INCR(value 值自动加 1) : incr key名字;
DECR(value 值自动减 1) :decr key名字;
INCRBY 递增值: incrby key名字 数字;
DECRBY 递减值:decrby key名字 数字 ;
GETRANGE : GETRANGE key start end: 获取 value 值的一部分
SETRANGE :SETRANGE key 起始位置 值: 从起始位置开始替换值
SETEX: SETEX key 名字 存活时间 值: 设定一组值同时设定存活时间;
SETNX: SETNX key 名字 值: 设置永久存活的一组值。 (key 值冲突无法存入值 – 返回值为 0)
MSET: mset key 值 key 值 … 一次设定多组值,如果 key 值存在也会覆盖
MGET: mget key key 一次获取多个 key 的值
MSETNX: 一次设定多组 key 值,如果有 key 值存在无法添加完成

List类型

LPUSH: 向集合中添加内容 lpush 集合的名字 值 显示的顺序和添加的顺序相反。
RPUSH: 向集合中添加内容 rpush 集合的名字 值 添加顺序就是显示顺序
LRANGE: 集合的名字 起始位置 结束位置 (-1 代表到集合的末尾 )
LLEN: llen 集合的名字 查看集合的长度
LPOP: lpop 集合的名称 移除集合中的第一个元素
RPOP: rop 集合的名称移除集合中的最后一个元素
LINDEX : 获取制定索引的值 lindex 集合的名称 索引数值
LREM : 删除指定数量的值: lrem 集合的名称 个数 值 ( 集合中有重复值 );

hash类型(hash表的基本操作与string一样.特别适合存储对象数据)

HSET: 存放一组键值对 hset key 值的名称 具体的值;(重复添加会覆盖原来的值)
HGET:获取一个值: hget key 值的名称
HMSET: 设定多组键值对 HMSET customer id 1 name zs address beijing
HMGET: 获取过个键对应的值 hmget customer id name address
HGETALL: 获取所有的数据 hgetall key 值;
HDEL: 删除某个指定的 key 的一组 value hdel customer id
HLEN: 当前的 key 有几组对应的键值对
HEXISTS: 判断当前 key 中是否有指定名称的键值对: hexists customer id;
HKEYS:获取所有的 key
HVALS: 获取所有的值
HINCRBY: 增加指定步长的数据 hincrby customer age 2;
HINCRBYFLOAT: 在原有的基础上增加指定的小数。 hincrbyfloat customer course 0.5
HSETNX: 如果 value 中的 key 重复不能添加到集合中。

set类型(无序不重复)

SADD:添加值 sadd 集合名称 值 …
SMEMBERS:查看值 smembers 集合名称
SCARD : 集合中元素个数 scard 集合名称
SREM : 删除集合中的某个值 srem 集合名称 值;
SPOP: 随机从集合中移除一个数据 spop 集合名称
SMOVE: 将集合中的某个值赋给另外一个集合: SMOVE 集合 1 集合 2 值;
SDIFF: 差集
SINTER: 交集
SUNION: 并集

Zset类型(是 string 类型的有序集合,也不可重复)

sorted set 中的每个元素都需要指定一个分数,根据分数对元素进行升序排序,如果多个元素有相同的分数,则以字典序进行升序排序
Zadd:创建集合并设定标准 zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5(等级划分的数据)
ZRANGE: 查询所有的标准 ZRANGE zset01 0 -1 , ZRANGE zset01 0 -1 withscores
ZRANGEBYSCORE : 根据分数查询内容
ZRANGEBYSCORE zset01 60 90 ( 注意如果前面添加”(” 表示不包含节点的意思 )
withscores limit 起始位置 数量 .
ZREM : 删除元素 zrem 集合 某 score 下对应的 value 值。ZREM zset01 v5
ZCARD: 统计有几个键值对 zcard 集合
ZCOUNT: zcount 集合 数值 1 数值 2 统计区间的值
ZRANK : 统计对应的下标 zrank 集合名 values
ZSCORE : zscore 集合名 values 获取对应的分数
redis 127.0.0.1:6379> ZADD runoobkey 1 redis
(integer) 1
redis 127.0.0.1:6379> ZADD runoobkey 2 mongodb
(integer) 1
redis 127.0.0.1:6379> ZADD runoobkey 3 mysql
(integer) 1
redis 127.0.0.1:6379> ZADD runoobkey 3 mysql
(integer) 0
redis 127.0.0.1:6379> ZADD runoobkey 4 mysql
(integer) 0
redis 127.0.0.1:6379> ZRANGE runoobkey 0 10 WITHSCORES

5.redis的事务规则

批量操作在发送 EXEC 命令前被放入队列缓存。
收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
redis 127.0.0.1:7000> multi
OK
redis 127.0.0.1:7000> set a aaa
QUEUED
redis 127.0.0.1:7000> set b bbb
QUEUED
redis 127.0.0.1:7000> set c ccc
QUEUED
redis 127.0.0.1:7000> exec
maven项目下使用java操作redis数据库
1.创建一个简单的maven项目pom.xml如下

<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version></dependency>
</dependencies>

2.使用jredis模板

package com.wwj.test;

import org.junit.Test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

public class TestRedis {

@Test
public void testJedis() {// 创建一个 Jedis 的连接Jedis jedis = new Jedis("144.202.3.120", 6379);// 密码认证 如果设置了密码,就需要进行认证jedis.auth("redis");// 执行 redis 命令jedis.set("mytest", "hello world, this is jedis client!");

}

@Test
public void testJedisPool() {
// 创建一连接池对象
JedisPool jedisPool = new JedisPool("144.202.3.120", 6379);
// 从连接池中获得连接
Jedis jedis = jedisPool.getResource();
// 密码认证 如果设置了密码,就需要进行认证
jedis.auth("redis");
String result = jedis.get("mytest");
System.out.println(result);
// 关闭连接
jedis.close();
// 关闭连接池
jedisPool.close();
}

}

redis练习操作:http://try.redis.io/


http://chatgpt.dhexx.cn/article/xvlUOBIK.shtml

相关文章

html如何隐藏input,html如何让input隐藏

隐藏方法&#xff1a;1、设置input标签 type属性的值为“hidden”&#xff1b;2、利用input标签的style属性&#xff0c;添加“display:none”样式&#xff1b;3、利用input标签的style属性&#xff0c;添加“visibility:hidden”样式。 本教程操作环境&#xff1a;windows7系统…

使用java实现杨辉三角的输出

案例&#xff1a;杨辉三角 实现代码 结果输出

【Java】 杨辉三角 二维数组打印杨辉三角

Tips 打印三角的操作 : 每行打印前预留空格打印指定数量的星号后换行重复循环打印直至完成所有打印结果 杨辉三角: 三角规律空格最大对称值为 5 大于 5 则会变形三角规律为当前值为上一个值加上前一个值 首尾的数字值相等参考二维数组的规律生成数值 import java.util.Sca…

java输出杨辉三角(等腰三角形版)

网上转了一圈&#xff0c;各种形式都有&#xff0c;给出一种不用那些啥制表符的等腰三角形版本 杨辉三角 杨辉三角形各行的系数满足以下的规律&#xff1a; ①各行第一个数都是1&#xff1b; ②各行最后一个数都是1&#xff1b; ③从第3行起&#xff0c;除上面指出的第一个数…

用Java编写杨辉三角的几种实现方式

一、前言 最近在学习java&#xff0c;遇到了杨辉三角的编程代码题&#xff0c;这是一道经典的面试题&#xff0c;在经过网上搜索和老师的讲解之后&#xff0c;于是想把代码贴出来&#xff0c;分析一下思路。 二、杨辉三角 1.直角杨辉三角 2.等腰杨辉三角 这就是两种杨辉三角…

JAVA杨辉三角的详细解释

近期java面试题中总会出现算法题&#xff0c;最近我看到了很多杨辉三角的面试题&#xff0c;自己当时手写也没分析好思路&#xff0c;在网上听老师一讲于是就写出来了&#xff0c;今天把代码贴出来看下&#xff0c;思路分析下; 首先看下排列的结果&#xff1a; 可以很清楚的看…

Java实现杨辉三角形

一&#xff1a;前言 实现杨辉三角&#xff0c;需要知道什么是杨辉三角。如下图&#xff0c;就是两种杨辉三角。这两种杨辉三角形是目前最常见的&#xff1a; &#xff08;1&#xff09;等边形状的杨辉三角 &#xff08;2&#xff09;直角形状的杨辉三角 二、杨辉三角形的规…

Java代码实现杨辉三角

一、杨辉三角的概念 杨辉三角是二项式系数在三角形中的一种几何排列&#xff0c;南宋数学家杨辉在《详解九章算法》中有记载&#xff0c;欧洲的帕斯卡也发现这一规律&#xff0c;故又称帕斯卡三角形&#xff0c;比杨辉晚几百年发现该规律 二、杨辉三角的特性 他的两条斜边都是…

杨辉三角形Java实现

一、杨辉三角形的特点 &#xff08;1&#xff09;每个数等于它上方两数之和。 &#xff08;2&#xff09;每行数字左右对称&#xff0c;由1开始逐渐变大。 &#xff08;3&#xff09;第n行的数字有n项。 &#xff08;4&#xff09;前六行的杨辉三角形如图&#xff1a; 二、J…

Java解决杨辉三角问题(这里提供了两种方法)

杨辉三角作为一个数学问题&#xff0c;所以我们在做这道题的时候可以用数学思维将其解决。 下面我将我的实现代码和测试结果附上&#xff1a; package practice;/*** 杨辉三角问题*/ public class Yanghuisanjiao {public static void main(String[] args) {print1(25);print2(…

基于Java的杨辉三角

直角杨辉三角 杨辉三角的规律是每行数字的第一列和最后一列的数字都是1&#xff0c;从第三行开始&#xff0c;除去第一列和最后一列都为数字1以外&#xff0c;其余每列的数字都等于它上方两个数字之和。例如下面图片中7字形圈起来的&#xff1a;4 3 1、35 15 20。 代码实…

杨辉三角形(Java版)

不为失败找理由&#xff0c;只为成功找方法。所有的不甘&#xff0c;因为还心存梦想&#xff0c;所以在你放弃之前&#xff0c;好好拼一把&#xff0c;只怕心老&#xff0c;不怕路长。 文章目录 1. 什么是杨辉三角形2. 实现思路&#xff08;方式&#xff09;2.1 递归方式2.2 递…

JAVA实现杨辉三角的三种方式

一、前言 既然是实现杨辉三角&#xff0c;就要知道什么是杨辉三角。如下图&#xff0c;就是两种杨辉三角。 &#xff08;1&#xff09;等边形状的杨辉三角 &#xff08;2&#xff09;直角形状的杨辉三角 在知道这两种都是杨辉三角之后&#xff0c;我们就来实现利用java语言打…

杨辉三角(Java)

实现思路&#xff1a;我们可以先把杨辉三角想象成一个空的二维数组&#xff0c;然后再给它赋值输出即可。 关键在于如何赋值&#xff1a;仔细观察上图可以得出除了每一行第一个数以及最后一个数&#xff08;都是1&#xff09;&#xff0c; 中间的数字规律就是&#xff1a;a[ i …

Java:杨辉三角

键盘录入数字n&#xff0c;输出n行杨辉三角&#xff08;Java&#xff09; 文章目录 前言一、杨辉三角是什么&#xff1f;二、代码拆分解释三、代码运行和结果 1.代码运行2.结果 前言 编写杨辉三角的程序会用到金字塔输出的知识点&#xff0c;点下面连接查看。输入一个整数n&…

Java语言实现杨辉三角

一.提出问题。 使用二维数组打印出如下图的杨辉三角。 二.分析问题。 1.首先想要输出杨辉三角&#xff0c;就要找到它有什么规律&#xff1f; ①第n行有n个数字&#xff1b; ②每一行开始和结束的数字都为1&#xff1b; ③每一个数字都等于它的左上角的数字与右上角数字之和。…

java实现杨辉三角

首先杨辉三角的构成如下 通过分析能得出如下两个规律 1.第n行有n个元素&#xff0c;并且每一行的首尾元素都是1 1.中间的元素等于上面相邻的元素之和&#xff0c;用二维数组表示就是arr[i][j] arr[i-1][j] arr[i-1][j-1] 接下来就是实现动态开辟二维数组以此表示杨辉三角形…

Java编写杨辉三角

如图就是一个7层的杨辉三角&#xff0c;今天我们就用Java来编写这样一个杨辉三角。我还是把这个过程分为几个小的步骤来完成。 一、编写一个二维数组 通过观察&#xff0c;我们可以知道这样一个杨辉三角其实就是每行列数不同的二维数组&#xff0c;且第i行的列数其实就是i&am…

不到50天 零基础 如何学习【数据结构】?

转载于知乎 点击原文链接&#xff0c;可进入原问题 考研计算机&#xff0c;还剩50天&#xff0c;目前零基础&#xff0c;如何学习数据结构&#xff1f; 题主情况&#xff1a; 1.零基础跨专业考研计算机&#xff0c;目前数学英语进度不错。但专业课…因为c语言也是零基础&#x…

自学 数据结构(一)

数据结构的简介 前言数据结构起源一、逻辑结构二、物理结构三、总结概念 前言 数据结构分别有两个重要结构&#xff1a;逻辑结构和物理结构 数据结构起源 数据结构是一门研究非数值计算的程序设计问题中的操作对象&#xff0c;以及官们之间的关系和操作等相关 问题的学科。 …