学习redis

本文介绍了Redis的部署步骤,包括下载、安装及启动服务。接着,详细阐述了Redis的基本概念,如数据类型(String、Hash、List、Set、Sorted Set)及其特性。此外,还探讨了Redis的事务处理机制,保证了命令的原子性和隔离性。最后,提及了Java环境下使用Redis的简单示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、部署redis

1、下载Windows redis,并解压。

2、进入cmd,把目录指向redis解压的目录。

3、输入命令 redis-server redis.windows.conf ,启动redis。如下显示,表示启动成功。


4、 打开redis目录,双击redis-cli.exe 运行一个客户端。


5、设置redis服务。进入cmd,把目录指向redis解压的目录,输入命令 redis-server --service-install redis.windows-service.conf --loglevel verbose 。


6、设置redis服务成功。


二、redis简介

1、redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String)、 哈希(Map)、列表(list)、 集合(sets) 和 有序集合(sorted sets)等类型。

2、redis 三个特点:

(1)redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

(2)redis不仅仅支持简单的key-value类型的数据,同时还提供list、set、zset、hash等数据结构的存储。

(3)redis支持数据的备份,即master-slave模式的数据备份。

3、redis 优势

(1)性能极高 ---Redis能读的速度是110000次/s,写的速度是81000次/s 。

(2)丰富的数据类型 ---Redis支持二进制案例的 Strings、 Lists、Hashes、Sets 及 Ordered Sets 数据类型操作。

(3)原子 ---redis的所有操作都是原子性的,同时redis还支持对几个操作全并后的原子性执行。

(4)丰富的特性---Redis还支持 publish/subscribe、通知、 key 过期等等特性。

三、redis数据类型

1、String(字符串)

string是redis最基本的类型,一个key对应一个value。string类型是二进制安全的,redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。一个键最大能存储512MB。


2、hash(哈希)

redis hash 是一个键名对集合。redis hash是一个string类型的field和value的映射表,hash适合用于存储对象。每个 hash 可以存储232 -1 键值对(40多亿)。


3、list(列表)

redis 列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。列表最多可存储232 - 1 元素 (每个列表可存储40多亿)。


4、set(集合)

redis的Set是string类型的无序集合。集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1)。集合中最大的成员数为 232- 1( 每个集合可存储40多亿个成员)。


5、zset(sorted set:有序集合)

redis 也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

四、redis事务

1、redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:

(1)事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。

(2)事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。

2、一个事务从开始到执行会经历以下三个阶段:开始事务、命令入队、执行事务。

3、一个事务它先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令


五、Java使用redis

例1:连接到redis服务

import redis.clients.jedis.Jedis;
 
public class RedisTest {
    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost");
        System.out.println("连接成功");
        //查看服务是否运行
        System.out.println("服务正在运行: "+jedis.ping());
    }
}


例2:redis 字符串

import redis.clients.jedis.Jedis;
 
public class RedisString {
    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost");
        System.out.println("连接成功");
        //设置 redis 字符串数据
        jedis.set("xu", "123456");
        // 获取存储的数据并输出
        System.out.println("redis 存储的字符串为: "+ jedis.get("xu"));
    }
}


例3:redis列表
import java.util.List;
import redis.clients.jedis.Jedis;
 
public class RedisList {
    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost");
        System.out.println("连接成功");
        //存储数据到列表中
        jedis.lpush("site-list", "1");
        jedis.lpush("site-list", "2");
        jedis.lpush("site-list", "3");
        // 获取存储的数据并输出
        List<String> list = jedis.lrange("site-list", 0 ,2);
        for(int i=0; i<list.size(); i++) {
            System.out.println("列表: "+list.get(i));
        }
    }
}


例4:redis keys

import java.util.Iterator;
import java.util.Set;
import redis.clients.jedis.Jedis;
 
public class RedisKeys {
    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost");
        System.out.println("连接成功");
 
        // 获取数据并输出
        Set<String> keys = jedis.keys("*"); 
        Iterator<String> it=keys.iterator() ;   
        while(it.hasNext()){   
            String key = it.next();   
            System.out.println(key);   
        }
    }
}
















































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值