Redis快速入门及应用(一)

187 阅读3分钟

一、Redis概览

Redis(Remote Dictionary Server)是一种快速的键值对数据库,保存所有数据于内存中以实现快速的读写操作。它支持丰富的数据类型,如字符串、列表、集合、有序集合和哈希表,并且提供持久化、Lua脚本编程、内置发布/订阅等特性,满足各种业务需要。

二、Redis数据类型及示例

  1. 字符串(String):字符串是最基本的数据类型,一个key对应一个value,主要命令有set,get,decr,incr,mget等。

    示例:

    set mykey somevalue
    get mykey
    
  2. 哈希(Hash):哈希是一个键值对集,主要命令有hset,hget,hgetall等。

    示例:

    hset user:1 name "John"
    hget user:1 name
    
  3. 列表(List):列表是简单的字符串列表,按插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。主要命令有lpush,rpush,lpop,rpop,lrange等。

    示例:

    rpush mylist A
    rpush mylist B
    lrange mylist 0 -1
    
  4. 集合(Set):集合是无序的字符串的集合,通过HashTable实现,主要命令有sadd,spop,smembers,sunion,sinter等。

    示例:

    sadd myset 1
    sadd myset 2
    smembers myset
    
  5. 有序集合(Sorted Set):和set相比,zset增加了一个权重参数score,使得集合中的元素能够按score进行有序排列。主要命令有zadd,zrange,zrem,zincrby等。

    示例:

    zadd myzset 1 one
    zadd myzset 2 two
    zrange myzset 0 -1 withscores
    

三、数据持久化

Redis提供两种持久化方法:RDB和AOF。RDB方式通过在指定的时间间隔内生成数据的快照来保存数据,而AOF方式则记录服务器接收到的每一条写命令。两种方式都有各自的优点,可以根据实际需求进行选择。

例如,要设置Redis进行RDB持久化,可以在配置文件中添加如下命令:

save 900 1
save 300 10
save 60 10000

这个配置的意思是,如果900秒内有1个键值改变,或者300秒内有10个

键值改变,或者60秒内有10000个键值改变,就将数据写入磁盘。

四、键过期策略与内存管理

Redis中的每一个键都可以设置过期时间,到达设定时间后,键会被自动删除。当内存不足时,Redis可以根据设定的策略自动淘汰键。例如,可以设置最少使用(LRU)或最近最少使用(LFU)策略。

设置键的过期时间示例:

set mykey hello
expire mykey 10

这个例子设置了键mykey10秒后过期。

五、发布订阅模式

Redis的发布订阅模式允许客户端订阅一个或多个频道,然后其他客户端向这些频道发送消息,所有订阅这个频道的客户端都会收到这个消息。

发布订阅的示例:

# 客户端1:
subscribe news

# 客户端2:
publish news "Redis 6.0 is out!"

在这个例子中,客户端1订阅了news频道,当客户端2向news频道发送消息时,客户端1会收到这个消息。

六、Lua脚本

Redis支持Lua脚本,开发者可以使用Lua脚本进行复杂的事务性操作。例如,一个递增计数器可以这样实现:

eval "return redis.call('incr', KEYS[1])" 1 counter

这个Lua脚本使得counter的值递增,并返回增加后的值。

七、实战应用

Redis被广泛用于各种场景,例如作为缓存系统,消息队列系统,排行榜等等。