1. Redis简介
Redis是一款根据BSD开源协议发行的高性能Key-Value存储系统。通常被称为数据结构服务器,因为value可以是字符串(String)、哈希(Map)、列表(List)、集合(Sets)、有序集合(sorted sets)、位图(bitmaps)等类型。
Redis最好的地方在于提供数据持久化功能——定时把内存中的数据写入文件,从而不至于发生宕机时数据丢失。相较于Memcached,它提供的值类型选择更为宽泛。
2. Redis中的数据类型
Redis是键值对的数据库,有五种主要数据类型:
string、hash、list、set、zset
2.1 基本命令
KEYS * :获得当前数据库的所有键
EXISTS key[key...] :判断键是否存在,返回个数,如果key有一样的也是叠加数
DEL key[key...] :删除键,返回删除的个数
TYPE key :获取减值的数据类型
FLUSHALL :清空所有数据库
CONFIG[get、set] :Redis配置
2.2 字符串类型string
为Redis的最基本类型,可以存储任何形式的字符串。其它四种类型都是字符串类型的不同形式。
- 最基本命令:GET、SET。
GET key, SET key valuevalue如果有空格需要双引号区分。 - 整数递增:INCR。
INCR key默认值为0。首先执行命令得到1,不是整型提示错误。 - 增加指定的整数:INCRBY。
INCRBY key increment - 整数递减:DECR。
DECR key默认值为0。首先执行命令得到-1,不是整型提示错误。 - 减少指定的整数:DECRBY。
DECRBY key increment - 增加指定浮点数:INCRBYFLOAT。
INCRBYFLOAT key increment与INCR命令相似,就是可以递增一个双精度浮点数。 - 向尾部追加值:APPEND。
APPEND key valueRedis客户端并不是输出追加后的字符串,是输出字符串的总长度。
2.3 散列类型hash
- 设置单个:HSET。
HSET key field value不存在时返回1,存在时返回0,没有更新和插入之分。 - 设置多个:HMSET。
HMSET key field value[field value...] - 读取单个:HGET。
HGET key field不存在返回nil。 - 读取全部:HGETALL。
HGETALL key返回字段和字段值的列表。 - 删除字段:HDEL。
HDEL key field[field...]返回被删除字段的个数。 - 只获取字段名:HKEYS。
HKEYS key返回键的所有字段名。 - 只获取字段值:HVALS。
HVALS key返回键的所有字段值。 - 字段数量:HLEN。
HLEN key返回字段总数。
2.4 列表类型list
内部使用双向链表实现,所以获取越接近两段的元素速度越快,但通过索引访问时会较慢。
- 添加左/右边元素:L/RPUSH。
L/RPUSH key value[value...]返回添加后的列表元素的总个数。 - 移除左/右边元素:L/RPOP。
L/RPOP key返回被移除的元素值。 - 列表元素个数:LLEN。
LLEN key不存在时返回0,Redis时直接读取现成的值,不是统计个数。 - 获取列表片段:LRANGE。
LRANGE key start stop如果start比stop靠后,返回空列表;0,-1返回整个列表。
2.5 集合类型set
集合类型值具有唯一性,常用操作是向集合添加、删除、判断某个值是否存在,集合内部是使用值为空的散列表实现的。
3. 连接池
MaxIdle:最大的空闲连接数,表示即使没有Redis连接时依然可以保持N个空闲的连接而不被清除,随时处于待命状态。
MaxActive:最大的激活连接数,表示同时最多有N个连接。
IdleTimeout:最大的空闲连接等待时间,超过此时间后,空闲连接将被关闭。
心得体会(总结)
- 理解数据结构:Redis提供多种数据结构,如字符串、哈希表、列表、集合和有序集合等。学习Redis的第一步是深入理解这些数据结构的特性、用法以及适用场景。了解每个数据结构的操作和命令能够更好地利用Redis提供的功能。
- 了解持久化机制:Redis提供了两种持久化机制,即RDB快照和AOF日志。理解它们的区别、配置方式以及如何选择适当的持久化方式对于保证数据的一致性和可靠性至关重要。学习如何备份、还原和恢复Redis数据,以及如何处理持久化相关的故障和问题也是必要的。
- 高可用和容错性:学习Redis的哨兵机制和主从复制是非常重要的。掌握如何设置Redis的主节点和备份节点、监测主节点可用性以及自动切换的操作可以提高系统的可用性和容错性。理解哨兵机制和复制原理能够更好地设计和构建具有高可用架构的Redis集群。