redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个功能强大的键值存储系统,其设计目标是提供高效的数据存储和操作。与Memcached相似,Redis 支持多种数据结构,如字符串(String)、列表(List)、集合(Set)、有序集合(Sorted Set)以及哈希(Hash),并且在这些数据结构上提供了丰富的操作命令。
**String 类型**:
- `set`:用于添加键值对,例如 `set username adming`。
- `get`:根据键获取对应的值,如 `get username`。
- `strlen`:返回键值的长度,如 `strlen key`。
- `exists`:检查键是否存在,返回1表示存在,0表示不存在,例如 `exists name`。
- `del`:删除一个或多个键,例如 `del key`。
- `keys`:查询匹配特定模式的键,如 `keys *` 查找所有键,`keys n?me` 查找以 "n" 开头的键。
- `mset`:同时设置多个键值对,如 `mset key1 value1 key2 value2 key3 value3`。
- `mget`:获取多个键的值,例如 `mget key1 key2`。
- `append`:向键的值追加内容,如 `append key val`。
- `type`:查看键对应的数据类型,如 `type key`。
- `select`:切换Redis数据库,范围从0到15,如 `select 0`。
- `flushdb`:清空当前数据库,`flushall` 清空所有数据库。
- `incr` 和 `decr`:自动对整数值加1或减1,例如 `incr key` 和 `decr key`。
- `incrby` 和 `decrby`:按指定数值增加或减少,如 `incrby key 10` 和 `decrby key 10`。
- `expire` 和 `pexpire`:设置键的过期时间,单位分别是秒和毫秒,如 `expire key 20` 和 `pexpire key 2000`。
- `ttl` 和 `pexpire`:检查键的剩余生存时间,返回值-2表示键不存在,-1表示永不过期,如 `ttl key`。
**Hash 类型**:
- `hset`:设置哈希表中的键值对,例如 `hset user id 2`。
- `hget`:获取哈希表中键对应的值,如 `hget user name`。
- `hexists`:检查键是否存在,如 `HEXISTS user age`。
- `hdel`:删除哈希表中的一个或多个键,如 `hdel user name age`。
- `hgetall`:获取哈希表中的所有键值对,如 `HGETALL user`。
- `hkeys`:获取哈希表中的所有键,如 `HKEYS user`。
- `hlen`:获取哈希表中键的数量,如 `hlen user`。
- `hmget`:获取哈希表中多个键对应的值,如 `hmget user id name`。
- `hmset`:设置哈希表中多个键值对,如 `hmset user id 2 name xiaoming age 19`。
- `hsetnx`:如果键不存在,则设置键值对,如 `HSETNX user nickname xiaoming`。
- `hstrlen`:获取哈希表中键值的长度,如 `HSTRLEN user nickname`。
- `hvals`:获取哈希表中所有值,如 `HVALS user`。
**List 类型**:
- `lpush`:在列表左侧添加元素,如 `LPUSH list item1`。
- `rpush`:在列表右侧添加元素,如 `RPUSH list item2`。
- `lpop`:从列表左侧移除并返回元素,如 `LPOP list`。
- `rpop`:从列表右侧移除并返回元素,如 `RPOP list`。
- `lpushx`:如果列表存在,将元素添加到左侧,如 `LPUSHX list item3`。
- `rpushx`:如果列表存在,将元素添加到右侧,如 `RPUSHX list item4`。
- `lrange`:获取列表中指定范围的元素,如 `LRANGE list 0 -1` 获取全部元素。
- `lrem`:根据计数移除列表中匹配的元素,如 `LREM list -2 "hello"`。
- `lset`:设置列表中指定索引的元素值,如 `LSET list 0 item5`。
Redis 的这些命令使得它成为了一个功能全面、适合多种场景的数据库,常用于缓存、消息队列、计数器等多种用途。它的原子性操作保证了数据一致性,而数据持久化机制则确保了数据的安全性。此外,Redis 还支持主从复制,以实现高可用性。
评论0