数据类型命令
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
1. String(字符串)
String是 redis 最基本的类型,最大能存储 512MB 的数据,String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等。INCR key: key值递增加1 ( key值必须为整数)、DECR key: key值递增减1 (key值必须为整数)、GETSET key value: 获取key值并返回,同时给key设置新值。
- set(key, value):给数据库中名称为 key 的 String 赋予值 value
- get(key):返回数据库中名称为 key 的 String 的 value
- getset(key, value):给名称为 key 的 String 赋予上一次的 value
- mget(key1, key2,…, key N):返回库中多个 String 的 value
- setnx(key, value):添加 String ,名称为 key,值为 value
- setex(key, time, value):向库中添加 String ,设定过期时间 time
- mset(key N, value N):批量设置多个 String 的值
- msetnx(key N, value N):如果所有名称为 key 的 String 都不存在
- incr(key):名称为 key 的 String 增 1 操作
- incrby(key, Integer):名称为 key 的 String 增加 N(Integer)
- decr(key):名称为 key 的 String 减 1 操作
- decrby(key, Integer):名称为 key 的 String 减少integer
- append(key, value):名称为 key 的 String 的值附加value
- substr(key, start, end):返回名称为 key 的 String 的 value 的子串
2.Hash(哈希)
Redis hash 是一个键值(key :value)对集合, 特别适合用于存储对象。
- hset(key, field, value):向名称为 key 的 hash 中添加元素 field
- hget(key, field):返回名称为 key 的 hash 中 field 对应的 value
- hmget(key, (fields)):返回名称为 key 的 hash 中 field 对应的 value
- hmset(key, (fields)):向名称为 key 的 hash 中添加元素 field
- hincrby(key, field, Integer):将名称为 key 的 hash 中 field 的 value 增加 Integer
- hexists(key, field):名称为 key 的 hash 中是否存在键为 field 的域
- hdel(key, field):删除名称为 key 的 hash 中键为 field 的域
- hlen(key):返回名称为 key 的 hash 中元素个数
- hkeys(key):返回名称为 key 的 hash 中所有键
- hvals(key):返回名称为 key 的 hash 中所有键对应的 value
- hgetall(key):返回名称为 key 的 hash 中所有的键(field)及其对应的 value
3.List(列表)
Redis 列表是简单的 String 字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),利用列表还能实现异步队列。
- rpush(key, value):在名称为 key 的 list 尾添加一个值为 value 的元素
- lpush(key, value):在名称为 key 的 list 头添加一个值为 value 的元素
- llen(key):返回名称为 key 的 list 的长度
- lrange(key, start, end):返回名称为 key 的 list 中 start 至 end 之间的元素
- ltrim(key, start, end):截取名称为 key 的 list
- lindex(key, index):返回名称为 key 的 list 中 index 位置的元素
- lset(key, index, value):给名称为 key 的 list 中 index 位置的元素赋值
- lrem(key, count, value):删除 count 个 key 的 list 中值为 value 的元素
- lpop(key):返回并删除名称为 key 的 list 中的首元素
- rpop(key):返回并删除名称为 key 的 list 中的尾元素
- blpop(key1, key2,… key N, timeout):lpop 命令的 block 版本
- brpop(key1, key2,… key N, timeout):rpop 的 block 版本
- rpoplpush(srckey, dstkey):返回并删除名称为 srckey 的 list 的尾元素,并将该元素添加到名称为 dstkey 的 list 的头部
4.Set(集合)
Redis 的 Set 是 string 类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
- sadd(key, member):向名称为 key 的 set 中添加元素 member
- srem(key, member) :删除名称为 key 的 set 中的元素 member
- spop(key) :随机返回并删除名称为 key 的 set 中一个元素
- smove(srckey, dstkey, member) :移到集合元素
- scard(key) :返回名称为 key 的 set 的基数
- sismember(key, member) :member 是否是名称为 key 的 set 的元素
- sinter(key1, key2,…key N) :求交集
- sinterstore(dstkey, (keys)) :求交集并将交集保存到 dstkey 的集合
- sunion(key1, (keys)) :求并集
- sunionstore(dstkey, (keys)) :求并集并将并集保存到 dstkey 的集合
- sdiff(key1, (keys)) :求差集
- sdiffstore(dstkey, (keys)) :求差集并将差集保存到 dstkey 的集合
- smembers(key) :返回名称为 key 的 set 的所有元素
- srandmember(key) :随机返回名称为 key 的 set 的一个元素
5.zset(sorted set:有序集合)
Redis zset 和 set 一样也是 string 类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个 double 类型的分数(权值),redis 可以通过这个分数来为集合中的成员进行从小到大的排序。zset 的成员是唯一的,但分数(score)却可以重复。
- zadd(key, score, member):向有序集合添加一个或多个成员,或者更新已存在成员的分数
- zcard(key) :获取有序集合的成员数
- zcount(key min max):计算在有序集合中指定区间分数的成员数
- zincrby(key, increment, member):有序集合中对指定成员的分数加上增量 increment
- zinterstore(destination, numkeys, key):计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 destination 中
- zlexcount(key, min ,max):在有序集合中计算指定字典区间内成员数量
- zrange(key, start ,stop):通过索引区间返回有序集合指定区间内的成员
- zrangeByLex(key, min ,max):通过字典区间返回有序集合的成员
- zrangeByScore(key, min ,max):通过分数返回有序集合指定区间内的成员
- zrank(key, member):返回有序集合中指定成员的索引
- zrem(key, member[member...]):移除有序集合中的一个或多个成员
- zremRangeByLex(key, min ,max):移除有序集合中给定的字典区间的所有成员
- zremRangeByRank(key, start, stop):移除有序集合中给定的排名区间的所有成员
- zremRangeByScore(key, min ,max):移除有序集合中给定的分数区间的所有成员
- zrevRange(key, start, stop):返回有序集中指定区间内的成员,通过索引,分数从高到低
- zrevRangeByScore(key, min ,max):返回有序集中指定分数区间内的成员,分数从高到低排序
- zrevRange(key, member):返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
- zscore(key, member):返回有序集中,成员的分数值
- zunionStore(destination numkeys, key[key ...]):计算给定的一个或多个有序集的并集,并存储在新的 key 中
Redis操作命令
1. Redis 连接
平时连接 redis 用的是官方客户端 redis-cli, 使用redis-cli最常用的几个参数如下:
- redis-cli -h 127.0.0.1 -p 6379 -a 12345(password)
如果没有 redis-cli,还可以用 telnet,连接方式为:
- telnet 127.0.0.1 6379
连接成功后,就已经和redis建立了通信,如果redis设置了密码,则还需要密码认证,使用 redis 命令 auth 认证即可:
- auth 12345(password)
2. 对 key 的操作
- keys * :查看目录下的所有keys
- keys key_*:查看前缀为“name_”的所有 keys(* 是模糊搜索的意思)
- exists key:确认一个 key 是否存在
- del key:删除一个key
- expire key time:设置一个 key 的过期时间为 time(单位:秒)
- move key area:将当前数据库中的 key 转移到 area(其他) 数据库中
- persist key :移除给定 key 的过期时间
- ttl key:查询 key 的剩余过期时间
- rename key:对指定 key 重命名
- type key:返回 key 的类型,便于对key进行相应地 get 操作
3. 清空所有 keys
- flushdb:清除当前数据库的所有 keys
- flushall:清除所有数据库的所有 keys