深入redis过程-命令
目录
通用命令
get
set
keys
exists
del
expire key seconds
ttl
type
常用数据结构
String类型
SET
GET
MSET
MGET
INCR
INCRBY
INCRBYFLOAT
SETNX
SETEX
Hash类型
HSET key field value
HGET key field
HMSET
HMGET
HGETALL
HKEYS
HVALS
HINCRBY
HSETNX
List类型
LPUSH Key element...
LPOP Key
RPUSH Key element...
RPOP Key
LRANGE key star end
BLPOP和BRPOP
Set类型
SADD Key member...
SREM Key member...
SCARD key
SISMEMBER key member
SMEMBERS
SINTER key1 key2...
SDIFF key1 key2...
SUNION key1 key2...
ZSet类型
ZADD key score member
ZREM key member
ZSCORE key member
ZRANK key member
ZCARD key
ZCOUNT key min max
ZINCRBY key increment member
ZRANGE key min max
ZRANGEBYSCORE key min max
ZDIFF、ZINTER、ZUNION
数据库管理命令
dbsize
select
flushdb
flushall
Redis是一个Key-value的数据库,Key一般是String类型,value的类型多种多样
通用命令
通用指令是部分数据类型的,都可以使用的指令,可以通过help [command]可以查看一个命令的具体用法
get
根据key获取String类型的value
set
添加或修改一个String类型的键值对,如果key存在就修改key对应的value,如果不存在就插入key value
keys
查找所有的key
exists
判断一个key是否存在,存在返回1,不存在返回0
del
删除key,后面可以指定删除多个key,如果不存在指定删除的key不会删掉
expire key seconds
给一个key设置有效期
ttl
查看以一个key的剩余有效期(有效期为-2 代表已经被删除了,为-1 代表永久保存)
type
返回key对应的数据类型
常用数据结构
Redis提供了一些数据结构供我们往Redis中存取数据,最常用的的有5种:字符串(String)、哈希(Hash)、列表(list)、集合(set)、有序集合(ZSET)
String类型
String类型,也就是字符串类型,是Redis中最简单的存储类型。其value是字符串,不过根据字符串的格式不同,又可以分为3类:
- String:普通字符串
- int:整数类型,可以做自增、自减操作
- float:浮点类型,可以做自增、自减操作
SET
添加或者修改已经存在的一个String类型的键值对
GET
根据key获取String类型的value
MSET
批量添加多个string类型的键值对
MGET
根据多个key获取多个String类型的value
INCR
让一个整型的key自增1
INCRBY
让一个整型的key自增并指定步长
INCRBYFLOAT
让一个浮点类型的数字自增并指定步长
SETNX
添加一个String类型的键值对,前提是这个key不存在,否则不执行
SETEX
添加一个String类型的键值对,并且指定有效期
Hash类型
Hash类型,也叫散列,其value是一个无序字典,类似于java中的HashMap结构。Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD
HSET key field value
添加或者修改hash类型key的field的值
HGET key field
获取一个hash类型key的field的值
HMSET
批量添加多个hash类型key的field的值
HMGET
批量获取多个hash类型key的field的值
HGETALL
获取一个hash类型的key中的所有的field和value
HKEYS
获取一个hash类型的key中的所有的field
HVALS
获取一个hash类型的key中的所有的value
HINCRBY
让一个hash类型key的字段值自增并指定步长
HSETNX
添加一个hash类型的key的field值,前提是这个field不存在,否则不执行
List类型
Redis中的List类型与java中的LinkedList类似,也可以看做是一个双向链表结构
LPUSH Key element...
向列表左侧插入一个或多个元素
LPOP Key
移除并返回列表左侧的第一个元素,没有则返回nil
RPUSH Key element...
向列表右侧插入一个或多个元素
RPOP Key
移除并返回列表右侧的第一个元素
LRANGE key star end
返回一段角标范围内的所有元素
BLPOP和BRPOP
与LPOP和RPOP类似,只不过在没有元素时等待指定时间,而不是直接返回nil
Set类型
Redis的Set结构与java中的HashSet类似,可以看做是一个value为null的HashMap
SADD Key member...
向set中添加一个或多个元素
SREM Key member...
移除set中的指定元素
SCARD key
返回set中元素的个数
SISMEMBER key member
判断一个元素是否存在于set中
SMEMBERS
获取set中的所有元素
SINTER key1 key2...
求key1与key2的交集
SDIFF key1 key2...
求key1与key2的差集
SUNION key1 key2...
求key1与key2的并集
ZSet类型
Redis的ZSet是一个可排序的set集合,与java中的TreeSet有些类似,但底层数据结构却差别很大。ZSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加hash表。
ZADD key score member
添加一个或多个元素到zset,如果已经存在则更新其score值
ZREM key member
删除zset中的一个指定元素
ZSCORE key member
获取zset中的指定元素的score值
ZRANK key member
获取zset中的指定元素的排名
ZCARD key
获取zset中的元素个数
ZCOUNT key min max
统计score值在给定范围内的所有元素的个数
ZINCRBY key increment member
让zset中的指定元素自增,步长为指定的increment值
ZRANGE key min max
按照score排序后,获取指定排名范围内的元素
ZRANGEBYSCORE key min max
按照score排序后,获取指定score范围内的元素
ZDIFF、ZINTER、ZUNION
求差集、交集、并集
数据库管理命令
redis数据库为固定的,有0~15编号的的数据库
dbsize
当前数据库表的个数
select
选择使用哪个编号的数据库(切换数据库)
flushdb
删除当前数据库下的所有表
flushall
删除所有数据库下的所有表