Redis数据类型及存取命令
理想三旬浓烟下,奔赴山海与荒野
一,Redis常用五种数据类型及存取命令
1,字符串(String)
1 # 设置字符串的值 2 SET key value 3 4 # 获取字符串的值 5 GET key
2,列表(List)
1 # 在列表左侧添加一个元素 2 LPUSH key value 3 4 # 在列表右侧添加一个元素 5 RPUSH key value 6 7 # 获取列表指定范围内的元素 8 LRANGE key start stop
3,集合(set)
1 # 添加一个元素到集合中 2 SADD key member 3 4 # 获取集合中所有元素 5 SMEMBERS key
4,有序集合(sorted set)
1 # 添加一个元素到有序集合中 2 ZADD key score member 3 4 # 根据分值范围获取有序集合中的元素 5 ZRANGEBYSCORE key min max
5,哈希表(hash)
1 # 设置哈希表中的键值对 2 HSET key field value 3 4 # 获取哈希表中的指定键值对 5 HGET key field
除了以上数据类型,Redis 还支持更多的数据类型和命令,如位图(bitmap),地理位置(geo)等。
此外,Redis 还提供了一些通用控制命令,如查询键是否存在,删除指定键值对等,这些命令都是在Redis中使用非常频繁的。
二,通用控制命令
1,存取控制
1 # 查看键是否存在 2 EXISTS key 3 4 # 删除指定键值对 5 DEL key [key ...] 6 7 # 设置键的过期时间(秒) 8 EXPIRE key seconds 9 10 # 获取键的过期时间(秒),-1表示永不过期,-2表示已过期 11 TTL key
2,计数器和数字控制
1 # 将指定键值加上一个整数 2 INCRBY key increment 3 4 # 将指定键值减去一个整数 5 DECRBY key decrement
3,事务控制
1 # 开启事务 2 MULTI 3 4 # 提交事务 5 EXEC 6 7 # 取消事务 8 DISCARD
4,其他
1 # 获取Redis服务器当前时间 2 TIME 3 4 # 执行脚本命令 5 EVAL script numkeys key [key ...] arg [arg ...]
5,服务器控制
1 # 关闭Redis服务器 2 SHUTDOWN [SAVE|NOSAVE] 3 4 # 通过哈希表设置Redis配置参数 5 CONFIG SET parameter value 6 7 # 获取Redis配置参数 8 CONFIG GET parameter
6,客户端控制
1 # 查看客户端连接信息 2 CLIENT LIST 3 4 # 关闭指定客户端连接 5 CLIENT KILL addr
7,复制控制
# 设置Redis主服务器 SLAVEOF ip port # 取消Redis的主从复制 SLAVEOF NO ONE # 读取复制操作日志和状态信息 INFO REPLICATION
三,Redis自定义数据类型模块
在 Redis 中,可以通过使用 Redis 模块系统自定义数据类型或扩展 Redis 功能。Redis 模块是一个可动态载入的库,通过其中定义的一组 API 实现所需的操作,同时其代码可以独立于其他 Redis 代码编写和调试。
自定义 Redis 模块需要如下步骤:
1,了解 Redis 模块 API
首先需要了解 Redis 模块 API 以便编写模块代码。Redis 模块 API 定义了一组由 Redis 主程序和模块之间调用的函数,使用这些 API 可以操作主存储器、执行 I/O、与客户端进行交互等。API 集合在 Redis 模块的头文件 redismodule.h 中,可以在 Redis 源码中找到。
2,编写模块代码
在编写过程中,需要使用模块 API 为 Redis 主程序添加新数据类型或扩展 Redis 功能。模块代码需要遵循一些规则以便 Redis 主程序可以动态加载它。例如,模块代码必须定义初始化函数、卸载函数和入口点函数等。
3,编译模块代码
编译模块代码需要使用 Redis 提供的编译器,编译后将产生动态链接库。模块文件名必须以 .so 或 .dll 为后缀,以便 Redis 主程序可以正确载入它。在编译过程中,需要将 Redis 主程序和模块头文件包含到编译命令中。
4,载入模块
通过 Redis 模块系统载入已编译的模块。可以使用 Redis 命令 MODULE LOAD
载入模块。载入模块后,Redis 主程序可以使用新的 API 和数据类型或扩展 Redis 功能。
Redis 模块提供了一种方便的方式扩展 Redis 的功能。这种扩展方式可以自定义强类型数据结构、算法等,并通过 Redis 内存管理系统来协调资源的分配和释放。同时,自定义的模块也可以享受 Redis 主程序的诸多特性,如持久化、复制等。