> msetnx 键 1 值 1 键 2 值 2 键 3 值 3 ....
getset 命令:获取原值,并设置新值
getrange 命令:获取指定范围的值
>getrange 键 0 4 // 获取指定 0 到 4 位置上的值
mget 命令: 批量获取值
>mget 键 1 键 2 键 3....
incr 命令: 指定键的值做加加操作,返回加后的结果。
>incr 键 例如: >incr kid
incrby 命令: 设置某个键加上指定值
> incrby 键 m // 其中 m 可以是正整数或负整数
decr 命令: 指定键的值做减减操作,返回减后的结果。
> decr 键 例如: >decr kid
decrby 命令: 设置某个键减上指定值
> decrby 键 m // 其中 m 可以是正整数或负整数
append 命令:给指定 key 的字符串追加 value,返回新字符串值的长度
>append 键 追加字串
strlen 求长度 >strlen 键名 // 返回对应的值。
Hash 类型
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
hset 命令:设置一个哈希表的键和值
>hset hash 名 键 值
如:>hset user:001 name zhangsan
hget 命令: 获取执行哈希名中的键对应值
hsetnx 命令:设置一个哈希表中不存在的键和值
>hsetnx hash 名 键 值 // 成功返回 1,失败返回 0
如:>hsetnx user:001 name zhangsan
hmset 命令: hmset user:001 username zhangsan age 20 sex 1 批量设置
hmget user:001 username age sex: 批量获取值
>hexists user:001 name // 是否存在, 若存在返回 1
>hlen user:001 // 获取某哈希 user001 名中键的数量
>hdel user:001 name // 删除哈希 user:001 中 name 键
>hkeys user:002 // 返回哈希名为 user:002 中的所有键。
>hvals user:002 // 返回哈希名为 user:002 中的所有值。
>hgetall user:002 // 返回哈希名为 user:002 中的所有键和值。
List 列表(双向链表结构)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
list 即可以作为 "栈" 也可以作为 "队列"。
操作:
>lpush list1 "world" // 在 list1 头部压入一个字串
>lpush list1 "hello" // 在 list1 头部压入一个字串
>lrange list1 0 -1 // 获取 list1 中内容
0: 表示开头 -1 表示结尾。
>rpush list2 "world" // 在 list2 尾部压入一个字串
>rpush list2 "hello" // 在 list2 尾部压入一个字串
>lrange list2 0 -1 // 获取 list2 中内容
0: 表示开头 -1 表示结尾。
>linsert list2 before hello there
在 key 对应 list 的特定位置前或后添加字符串
>lset list2 1 "four" 修改指定索引位置上的值
>lrem list2 2 "hello" // 删除前两个 hello 值
>lrem list2 -2 "hello" // 删除后两个 hello 值
>lrem list2 0 "hello" // 删除所有 hello 值
>ltrim mylist8 1 3 // 删除此范围外的值
>lpop list2 // 从 list2 的头部删除元素,并返回删除元素
>rpop list2 // 从 list2 的尾部删除元素,并返回删除元素
>rpoplpush list1 list2 // 将 list1 的尾部一个元素移出到 list2 头部。并返回
>lindex list2 1 // 返回 list2 中索引位置上的元素
>llen list2 // 返回 list2 上长度
Redis 集合 (Set)
Redis 的 Set 是 string 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
>sadd myset "hello" // 向 myset 中添加一个元素
成功返回 1,失败 (重复) 返回 0
>smembers myset // 获取 myset 中的所有元素 (结果是无序的)
>srem myset "one" // 从 myset 中删除一个 one
成功返回 1,失败 (不存在) 返回 0
>spop myset // 随机返回并删除 myset 中的一个元素
>srandmember myset // 随机获取 myset 中的一个元素,但是不删除
> smove myset1 myset2 zhangsan: 将 myset1 中 zhangsan 移动到 myset2 中
> scard myset1 返回 myset1 的个数
> sismember myset zhangsan: 判断张三是否在 myset 中
>sdiff myset1 myset2 // 返回两个集合的差集
以 myset1 为标准,获取 myset2 中不存在的。
>sdiffstore dstset myset1 myset2 ...// 返回所有集合的差集,并保存到 dstset 中
>sinter myset1 myset2 myset3... // 返回 N 个集合中的交集
>sinterstore dstset myset1 myset2 ... // 返回 N 个集合的交集并存储到 dstset 中
> sunion myset1 myset2 ...// 返回所有集合的并集
> sunionstore dstset myset1 myset2// 返回所有集合的并集,并存储到 dstset 中
Redis 有序集合 Sset (sorted set)
Redis 有序集合和集合一样也是 string 类型元素的集合, 且不允许重复的成员。
不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的, 但分数 (score) 却可以重复。
> zadd zset 1 one 向 zset 中添加 one,排序为 1 排序
> zrem zset one: 删除 zset 中 one
> zincrby zset 2 one: 如果 one 存在,则顺序增加 2,如果 one 不存在,那么就是 2
> zrank zset one: 返回 one 在 zset 中排名 (从小到大的排序)
> zrevrank zset one: 返回 one 在 zset 中排名 (从大到小的排序)
> zrange zset 0 -1 withscores: 根据 score 排序(根据 score 从小到大排序)
> zrevrange zset 0 -1 withscores: 根据 score 排序(根据 score 从大到小排序)
> zrangebyscore zset 2 3 withscores: 返回集合中 score 在给定区间的元素(包含 2 和 5)
> zcount zset 2 3: 返回集合中给定区间的数量
> zcard zset: 返回集合中元素的个数
> zscore zset one: 返回 one 元素的 score
> zremrangebyrank zset 3 3: 删除集合中排名在给定区间的元素
> zremrangebyscore zset 1 2: 将 zset 中从小到大排序结果的 score 在 1-2 之间的删除
来源: http://www.bubuko.com/infodetail-2432736.html