什么是Redis
Redis首先是一个存储数据库,数据在缓存在内存中,数据是K-V结构。
Redis的使用
- Redis的数据类型
类型 | 描述 | 备注 |
---|---|---|
string | 字符串 | K-V 最大值存储512M |
list | 简单字符串列表,可以将元素添加最左边或者右边 | 最多存储232 - 1 |
set | string类型的无序集合 | Hash表实现,查询效率O(1),最多存储232 - 1 |
zset | 有序集合,成员不能重复,但是scope可以重复 | image.png |
hash | 键值对的集合 | image.png |
- 常用命令
启动命令:redis-server
连接命令:redis-cli (本地) redis-cli -h 127.0.0.1 -p 6379 -a “mypwd” (remote)
介绍命令之前先说下命令返回值的类型:
-
状态回复
状态回复 -
错误回复
错误回复 -
整数回复
1 : 成功 , 0 :失败
-
字符串回复
字符串回复
key相关
序号 | 命令 | 描述 |
---|---|---|
1 | del key | key存在时删除key,不存在返回0 |
2 | dump key | 返回key的序列化值 |
3 | exists key | 判读key是否存在 |
4 | expire key time | key的有效期,单位 秒 |
5 | expireat key timestamp | key的有效期,单位毫秒 |
6 | pexpire key milliseconds | key的有效期,时间单位为时间戳 |
7 | pexpireat key milliseconds-timestamp | key的有效期,时间单位为毫秒的时间戳 |
8 | keys pattern | 查找所有符合patten的key |
9 | move key db | 将key 移到db的数据库;当前所在的db默认为0,select db转移到指定db |
10 | persist key | 移除key的过期时间 |
11 | ttl key | 查看key的剩余有效时间 秒 |
12 | pttl key | 查看key剩余有效时间毫秒 |
13 | randomkey | 随机返回一个key |
14 | rename key newkey | 修改已有key的名称,如果newkey 是已经存在的会将已经存在的value 覆盖 |
15 | renamenx key newkey | 当 且仅当newkey为null,修改key名称 |
16 | type key | 返回key的类型 |
string
序号 | 命令 | 描述 |
---|---|---|
1 | set key value | 设置key的值,如果key的value有值则覆盖 |
2 | get key | 获取key的值 |
3 | getrange key begin end | 截取key的value 下标begin- end,如果end -1 则认为value.length-1 |
4 | getset key value | 给key设置value,并返回value 的old value |
5 | mget key1 key2 | 获取多个key的值 |
6 | mset key1 value1 key2 value2 | 设置多个key-value |
7 | setex key seconds value | 设置key -value 并且设置过期时间 |
8 | setnx key value | 只有key不存在时设置value |
9 | strlen key | 返回key对应value 的长度 |
10 | incr key | 将key 对应的value 加1,只针对integer有效 |
11 | decr key | 将key 对应的value 减1 |
12 | append key value1 | 在key 的value后拼接value1 |
hash相关命令
hash是String类型的键值对映射表,适合存储对象
序号 | 命令 | 描述 |
---|---|---|
1 | hmset key field1 value1 field2 value2 | 将多个 field-value (域-值)对设置到哈希表 key 中 |
2 | hset key filed value | 将一个filed-value设置到哈希表key中 |
3 | hsetnx key filed value | 只有filed不存在时,设置value |
4 | hvals key | 获取hash中所有值 |
5 | hmget key field1 field2 | 获取多个key的值 |
6 | hlen key | 哈希表中字段数量 |
7 | hkeys key | 获取hash表中所有字段 |
8 | hgetall key | 获取给定key所有字段和值 |
9 | hget key field | 获取给定key&字段的值 |
10 | hexists key field | 判断哈希表key中,field是否存在 |
11 | hedl key field | 删除 key哈希表中的field |
List相关
String的列表,按照顺序排序,每个列表最多存储232-1元素
序号 | 命令 | 描述 |
---|---|---|
1 | lpush key value1 value2 | 将多个值加到列表头部 |
2 | llen key | 获取key列表长度 |
3 | lpushx key value | 将一个值添加到列表头部 |
4 | lrange key start end | 获取key列表范围元素start-end |
5 | lindex key index | 获取下标index 元素 |
6 | linsert key before/after value value1 | 在列表元素 value 之前或者之后插入value1 |
7 | rpush key value1 value2 | 将多个值加到列表尾部 |
8 | rpush key value | 为已存在的列表尾部添加值 |
9 | lset key index value | 通过索引设置值 |
10 | lpop key | 移除并获取列表第一个元素 |
11 | ltrim key | 截取保留区间内元素 |
12 | rpop key | 移除最后一个元素 |
13 | rpoppush source destination | 移除最后一个元素,并将该元素添加到另一个列表头部 |
14 | blpop key timeout | 移除并获取第一个元素,如果列表中没有该元素阻塞timeout 单位秒 |
15 | brpop key timeout | 移除并获取最后一个元素,如果列表中没有该元素阻塞timeout 单位秒 |
set相关
string元素唯一的无序集合,最多存储232-1元素
序号 | 命令 | 描述 |
---|---|---|
1 | sadd key value1 value2 | 向集合添加一个或者多个成员 |
2 | scard key | 获取集合成员个数 |
3 | sdiff key1 key2 | 返回key1集合在key2的差集 |
4 | sdiffstore key key1 key2 | 返回key1集合在key2的差集,并将结果存储到key中 |
5 | sinter key1 key2 | 返回集合的交集 |
6 | sinterstore key key1 key2 | 返回集合的交集,并将结果存储到key中 |
7 | sismember key member | 判断集合是否有member成员 |
8 | smembers key | 获取集合所有成员 |
9 | smove source destination member | 将member元素从source移到destination |
10 | spop key | 随机移除并返回一个元素 |
11 | srandmember key count | 返回集合中一个或者多个随机元素 |
12 | srem key member1 member2 | 移除集合中一个或者多个元素 |
13 | sunion key key2 | 返回给定集合的并集 |
14 | sunionstore destination key1 key2 | 返回给定集合的并集,并存储destination |
sorted set相关
相比较set 多了一个score(分数)
序号 | 命令 | 描述 |
---|---|---|
1 | zadd key score1 value1 score2 value2 | 向有序集合添加一个或多个成员,或者更新已存在成员的分数 |
2 | zcard key | 返回集合成员个数 |
3 | zcount key min max | 计算集合分数在min 和max之间成员个数 |
4 | zincrby key increment member | 在成员member的score上增加increment |
5 | zscore key member | 返回成员member的score |
6 | zlexcount key min max | 命令在计算有序集合中指定字典区间内成员数量 |
7 | zrange key start end withscores | 通过索引区间返回有序集合指定分数区间内的成员 |
事务
序号 | 命令 | 描述 |
---|---|---|
1 | multi | 标记一个事务的开启 |
2 | exec | 执行事务内的命令 |
3 | discard | 取消事务 |
4 | watch key1 key2 | 监视key1 key2,如果事务执行之前发生变化,则事务被打断 |
5 | unwatch | 取消所有对key的监视 |
- 配置
config get * 获取所有配置项
config set 修改配置项
配置项参数说明:
image.png
Redis的优点
- 性能高,读的速度110000次/秒,写的速度81000次/秒
- 所有指令都是原子级,支持多个操作事务,使用MULTI和EXEC。
- 支持数据的持久化,将内存的数据保存在磁盘上,重启的时候重新加载
- 支持数据的备份,即master-slave模式的备份
- 支持多种数据类型,string,hash,set,list,zset
网友评论