关于redis的详解

一.概念。

redis是一款高性能的NOSQL系列的非关系型数据库。

 

 

二.下载安装。

  1、redis有中文网。

  2、解压直接可以使用。

    *redis.windows.conf :配置文件。

    *redis-cli.exe : redis的客户端。

    * redis-server.exe :redis 服务器端。

三.命令操作。

  1、redis的数据结构:键值对格式,key是字符串类型,value有5中类型:

    *字符串类型 string

    * 哈希类型 hash : map格式

    * 列表类型 list : linkedlist 格式

    * 集合类型 set

    * 有序集合类型 sortedset

  2、字符串类型 string:

    *存储: set key value  

    * 获取: get key

    * 删除:del key

  3、哈希类型 hash:

    *存储: hset key field value 

    * 获取: hget key field hgetall key

    * 删除:hdel key field

  4、列表类型 list : 可添加一个元素到一个列表的头部或尾部。如果又添加,是以“挤进 去”的方式。

    * 添加:1、lpush key value 2、rpush key value

    * 获取: lrange key start end :范围获取。

    * 删除:lpop key rpop key 删除元素并将其返回。

  5、集合类型 set :无序、不允许元素重复。

    * 存储: sadd key value

     * 获取:smembers key 获取集合所有元素。

    * 删除;srem key value : 删除集合某个元素。

  6、有序集合 sortedset : 不允许元素重复,但有序。 根据score 排序
    * 存储 : zadd key score value

    * 获取 : zrange key start end

    * 删除: zrem key value

  7、通用命令。

    * keys * :查询所有键

    * type key : 获取key 对应value 的类型。

    * del key : 删除指定键值对。

四.持久化。

  1、redis 是一个内存数据库,当redis 服务器重启,或电脑重启,数据会丢失,所以需要持久化到硬盘

  2、redis 持久化机制:

    * RDB :默认方式,不需要配置。在一定时间内检测到key的变化情况后,持久化数据。  

      编辑redis.windows.conf 文件:

        save 900 1
        save 300 10
        save 60 10000

        意思:多少秒内,至少多少键发生变化了,就持久化一次。

    * AOF :日志记录的方式,可以记录每一条命令的操作。可每一次操作命令后,持久化数据。

      编辑 redis.windows.conf 文件:

        设置 appendonly yes (开启 aof )        

        # appendfsync always:每一次操作都持久化
        appendfsync everysec:每一秒进行一次持久化

        # appendfsync no:   不持久化

五.Java客户端 Jedis。

  * Jedis :一款Java操作redis数据库的工具

  * 使用步骤:先导入jar包 两个:jedis和jedis pool

    1、获取连接:Jedis jedis=new Jedis("localhost",6379); 空参默认是本机的。

    2、操作:方法名和命令行一样。

    3、关闭连接:jedis.close();  

  * 一些其他方法:

    1、jedis.setex("activecode",20,"rt") :存入键值对,并在20秒后自动删除。  

  * Jedis连接池:

    1、创建一个配置对象:

      JedisPoolConfig config =new JedisPoolConfig();

      config.setMaxTotal(20) ; config.setMaxIdle(10) ...........

    2、创建Jedis连接池对象。

      JedisPool jp=new JedisPool(config,"localhost",6379)

    3、获取连接。

      Jedis jedis=jp.getResource()

    4、使用。

    5、归还到连接池。 jedis.close();

  * 自定义jedis 工具类。

  * redis的应用:用redis缓存一些不经常发生变化的数据。

六.案例

  需求:提供index.html页面,有一个省份下拉列表,页面加载完后,发送Ajax,加载所有省份。

### Redis 详细教程和功能解析 #### 一、Redis 简介 Redis 是一个开源的内存数据结构存储系统,可以用作数据库、缓存和消息中间件。它支持多种数据结构,如字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)等[^3]。此外,Redis 提供了丰富的功能,包括事务支持、发布/订阅模式、Lua 脚本执行以及持久化选项。 #### 二、Redis 的用途 Redis 广泛应用于以下场景: - **缓存**:通过将频繁访问的数据存储在内存中,显著提高应用性能。 - **消息队列**:利用 Redis 的列表数据结构实现高效的队列管理。 - **会话存储**:存储用户会话信息,减少对传统数据库的压力。 - **计数器**:使用原子操作实现高并发环境下的计数功能。 - **地理位置查询**:借助 Geospatial 功能提供基于地理位置的服务[^2]。 #### 三、Redis 的特性 1. **高性能**:由于数据存储在内存中,Redis 的读写速度极快,每秒可处理数十万次请求。 2. **持久化支持**:提供 RDB(快照)和 AOF(追加日志)两种持久化方式,确保数据安全。 3. **丰富的数据结构**:支持多种数据类型,便于开发人员灵活处理复杂业务逻辑。 4. **分布式支持**:通过 Redis Cluster 实现水平扩展,满足大规模数据存储需求。 5. **多语言支持**:几乎所有的主流编程语言都提供了 Redis 客户端库[^3]。 #### 四、Redis 的 IO 模型 Redis 的 IO 模型主要包括单线程模型、混合线程模型和多线程模型: - **单线程模型**:Redis 主线程负责所有命令的处理,保证操作的原子性。 - **混合线程模型**:在网络 IO 和文件持久化过程中引入多线程,提升整体性能。 - **多线程模型**:从 Redis 6.0 开始,支持多线程处理网络请求,进一步增强并发能力[^1]。 #### 五、Redis 的安装与配置 以 Windows 系统为例,可以通过以下步骤安装 Redis: 1. 下载适用于 Windows 的 Redis 可执行文件或使用 Docker 镜像。 2. 解压后运行 `redis-server.exe` 启动服务。 3. 使用 `redis-cli.exe` 连接 Redis 服务器并测试基本命令[^3]。 #### 六、Redis 的核心功能解析 以下是 Redis 的一些核心功能及其使用方法: 1. **字符串(String)** ```python import redis r = redis.Redis(host='localhost', port=6379, db=0) r.set('key', 'value') # 设置键值对 print(r.get('key')) # 获取键对应的值 ``` 2. **哈希(Hash)** ```python r.hset('user:1000', mapping={'name': 'Alice', 'age': 25}) # 设置哈希字段 print(r.hgetall('user:1000')) # 获取整个哈希内容 ``` 3. **列表(List)** ```python r.lpush('queue', 'task1') # 左侧插入元素 r.rpush('queue', 'task2') # 右侧插入元素 print(r.lrange('queue', 0, -1)) # 获取列表中的所有元素 ``` 4. **集合(Set)** ```python r.sadd('fruits', 'apple', 'banana', 'orange') # 添加元素到集合 print(r.smembers('fruits')) # 获取集合中的所有成员 ``` 5. **有序集合(Sorted Set)** ```python r.zadd('scores', {'Alice': 100, 'Bob': 200, 'Charlie': 150}) # 插入带分数的元素 print(r.zrange('scores', 0, -1, withscores=True)) # 按分数排序获取元素 ``` 6. **Geospatial 功能** ```python r.geoadd('locations', longitude=116.3974, latitude=39.9075, member='Beijing') # 添加地理坐标 print(r.georadius('locations', 116.3974, 39.9075, 10, unit='km')) # 查询指定范围内的位置 ``` #### 七、Redis 的优缺点总结 - **优点**: - 极高的性能,适合需要快速响应的应用场景。 - 支持多种数据结构,能够灵活应对不同业务需求。 - 提供持久化功能,保障数据可靠性。 - **缺点**: - 数据存储在内存中,成本较高。 - 大规模数据存储时需要考虑分片和集群管理的复杂性[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值