Redis命令
Redis支持五种数据类型:String(字符串),hash(哈希),set(集合),list(列表)以及zset(sorted set:有序集合)等。
常用命令key管理
keys * :返回满足的所有键,可以模糊匹配 比如 keys abc* 代表abc开头的key
exists key:是否存在指定的key,存在返回1,不存在返回0
expire key second:设置某个key过期时间 时间为秒
del key:删除某个key
ttl key:查看剩余时间,当某个key不存在时,返回 -2;存在但没有设置剩余时间时,返回 -1,否则,以秒为单位,返回key的剩余生存时间。
persist key:取消过去时间
PEXPIRE key millisecond 修改key的过期时间为毫秒
select :选择数据库 数据库为 0-15(默认一共有16个数据库 ) 设计成多个数据库实际上是为了数据库安全和备份
move key dbindex:将当前数据中的key转移到其他数据库
randomkey:随即返回一个key
rename key key2:重命名key
echo:打印命令
dbsize:查看数据库key的数量
info:查看数据库的信息
flushdb:清除当前所有数据库
flushall:清除所有数据
key的命名建议:
redis单个key允许存入512M大小
- key不要太长,否则不仅会消耗内存,还会江堤查找的效率
- key不要太短,会降低可读性
- 在同一项目中,key最好使用统一命名模式,例如:user:123:password;
- key名称区分大小写
Redis数据类型
String类型 java
简介
1.string类型是Redis最基本的数据类型,一个键最大存储512MB
2.string数据类型是最简单的key-value类型,value其不仅是string,也可以是数字,是包含很多类型的特殊类型
3.string类型是二进制安全的,意思是redis的string可以包含任何数据。比如序列化的对象进行存储,比如一张图片进行二进制存储,比如简单的字符串,数值等扽
String命令
哈希(Hash)
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
实例:
127.0.0.1:6379> HMSET runoobkey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000
OK
127.0.0.1:6379> HGETALL runoobkey
1) "name"
2) "redis tutorial"
3) "description"
4) "redis basic commands for caching"
5) "likes"
6) "20"
7) "visitors"
8) "23000"
在以上实例中,我们设置了 redis 的一些描述信息(name, description, likes, visitors) 到哈希表的 runoobkey 中。
Redis hash 命令
列表(List)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
实例
redis 127.0.0.1:6379> LPUSH runoobkey redis
(integer) 1
redis 127.0.0.1:6379> LPUSH runoobkey mongodb
(integer) 2
redis 127.0.0.1:6379> LPUSH runoobkey mysql
(integer) 3
redis 127.0.0.1:6379> LRANGE runoobkey 0 10
1) "mysql"
2) "mongodb"
3) "redis"
在以上实例中我们使用了 LPUSH 将三个值插入了名为 runoobkey 的列表当中。
列表命令
集合(Set)
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
实例:
redis 127.0.0.1:6379> SADD runoobkey redis
(integer) 1
redis 127.0.0.1:6379> SADD runoobkey mongodb
(integer) 1
redis 127.0.0.1:6379> SADD runoobkey mysql
(integer) 1
redis 127.0.0.1:6379> SADD runoobkey mysql
(integer) 0
redis 127.0.0.1:6379> SMEMBERS runoobkey
1) "mysql"
2) "mongodb"
3) "redis"
在以上实例中我们通过 SADD 命令向名为 runoobkey 的集合插入的三个元素。
集合命令
Redis 事务
Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:
- 批量操作在发送 EXEC 命令前被放入队列缓存。
- 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
- 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
一个事务从开始到执行会经历以下三个阶段:
(1)开始事务。
(2)命令入队。
(3)执行事务。
实例:
以下是一个事务的例子, 它先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令:
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
QUEUED
redis 127.0.0.1:6379> GET book-name
QUEUED
redis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
QUEUED
redis 127.0.0.1:6379> SMEMBERS tag
QUEUED
redis 127.0.0.1:6379> EXEC
1) OK
2) "Mastering C++ in 21 days"
3) (integer) 3
4) 1) "Mastering Series"
2) "C++"
3) "Programming"
单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。
事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
如:
redis 127.0.0.1:7000> multi
OK
redis 127.0.0.1:7000> set a aaa
QUEUED
redis 127.0.0.1:7000> set b bbb
QUEUED
redis 127.0.0.1:7000> set c ccc
QUEUED
redis 127.0.0.1:7000> exec
1) OK
2) OK
3) OK
如果在 set b bbb 处失败,set a 已成功不会回滚,set c 还会继续执行。
事务命令
结束!!!
参考资料:https://www.runoob.com/redis/redis-tutorial.html