Redis常用命令
1.常用命令
keys * 获取所有的key select 0 选择第一个库 move myString 1 将当前的数据库key移动到某个数据库,目标库有,则不能移动 flushdb 清除指定库 randomkey 从当前数据库中随机返回 type key 类型 del key1 删除key exists key 判断是否存在key expire key 10 10过期 pexpire key 1000 毫秒 persist key 删除过期时间 ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期
2.string类型相关命令
字符串 string 是 Redis 最简单的数据结构。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。
set key value
设定key持有指定的字符串value,如果该key存在则进行覆盖操作。总是返回”OK”
127.0.0.1:6379> set company "itcast" OK 127.0.0.1:6379>
get key
获取key的value。如果与该key关联的value不是String类型,redis将返回错误信息,因为get命令只能用于获取
String value;如果该key不存在,返回(nil)。
127.0.0.1:6379> set name "itcast" OK 127.0.0.1:6379> get name "itcast"
del key
127.0.0.1:6379> del name (integer) 1 127.0.0.1:6379> get name (nil)
主键自增
127.0.0.1:6379> set id 0 OK 127.0.0.1:6379> incr id (integer) 1 127.0.0.1:6379> get id "1" 127.0.0.1:6379>
其他
set name cxx get name getrange name 0 -1 字符串分段 0 -1是全部 0 -2 ==n-1 getset name new_cxx 设置值,返回旧值 mset key1 key2 批量设置 mget key1 key2 批量获取 setnx key value 不存在就插入(not exists) setrange key index value 从index开始替换value incr age 递增 incrby age 10 递增 decr age 递减 decrby age 10 递减 incrbyfloat 增减浮点数 append 追加 strlen 长度 object encoding key 得到key 的类型 string里面有三种编码 int 用于能够副作用64位有符号整数表示的字符串 embstr 用于长度小于或等于44字节 Redis3.x中是39字节,这种类型的编码在内存使用时性能更好 raw 用于长度大于44字节的
3.list
在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和
尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表
中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是4294967295个。
lpush key values[value1 value2…]
在指定的key所关联的list的头部插入所有的values,如果该key不存在,该命令在插入的之前创建一个与该key
关联的空链表,之后再向该链表的头部插入数据。插入成功,返回元素的个数。
127.0.0.1:6379> lpush mylist a b c (integer) 3 127.0.0.1:6379>
lpop key
返回并弹出指定的key关联的链表中的第一个元素,即头部元素。如果该key不存在,返回nil;若key存在,则返
回链表的头部元素。
127.0.0.1:6379> lpush mylist a b c (integer) 3 127.0.0.1:6379> lpop mylist "c" 127.0.0.1:6379> lpop mylist "b"
rpop key
从尾部弹出元素
127.0.0.1:6379> lpush mylist a b c (integer) 3 127.0.0.1:6379> rpop mylist "a"
其他
lpush mylist a b c 左插入 rpush mylist x y z 右插入 lrange mylist 0 -1 取出数据集合 0 -1是取出所有 0 1取第第一个和第二个 lpop mylist 弹出集合最后一个元素 弹出之后就没有了哦 rpop mylist 弹出第一个元素 弹出之后就没有了哦 llen mylist 长度 lrem mylist count value 删除 |-COUNT 的值可以是以下几种: |--count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。 |--count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。 |--count = 0 : 移除表中所有与 VALUE 相等的值。 lindex mylist 2 指定索引的值 lset mylist 2 n 索引设值 ltrim mylist 0 4 |--对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。 linsert mylist before a 插入 linsert mylist after a 插入 |--命令用于在列表的元素前或者后插入元素。 当指定元素不存在于列表中时,不执行任何操作。 当列表不存在时,被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误。 rpoplpush list list2 转移列表的数据 |--命令用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回。
4.hash
Redis中的Hash类型可以看成具有String Key和String Value的map容器。所以该类型非常适合于存储值对象的信
息。如Username、Password和Age等。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空
间。每一个Hash可以存储4294967295个键值对。
hset key field value
为指定的key设定field/value对(键值对)。
127.0.0.1:6379> hset myhash username tom (integer) 1 127.0.0.1:6379>
hget key field
返回指定的key中的field的值
127.0.0.1:6379> hset myhash username tom (integer) 1 127.0.0.1:6379> hget myhash username "tom"
hdel key field [field … ]
可以删除一个或多个字段,返回值是被删除的字段个数
127.0.0.1:6379> hdel myhash username (integer) 1 127.0.0.1:6379> hget myhash username (nil) 127.0.0.1:6379>
其他
hset myhash name cxx |--命令用于为哈希表中的字段赋值 。 |--如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。 |--如果字段已经存在于哈希表中,旧值将被覆盖。 hget myhash name hmset myhash name cxx age 25 note "i am notes" hmget myhash name age note hgetall myhash 获取所有的 hexists myhash name 是否存在 hsetnx myhash score 100 设置不存在的 如果存在,不做处理 hincrby myhash id 1 递增 hdel myhash name 删除 hkeys myhash 只取key hvals myhash 只取value hlen myhash 长度
5.set
在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也可以在该类型的数据值上执行
添加、删除或判断某一元素是否存在等操作。需要说明的是,这些操作的时间复杂度为O(1),即常量时间内完成次操
作。Set可包含的最大元素数量是4294967295,和List类型不同的是,Set集合中不允许出现重复的元素。
sadd key values[value1、value2…]
向set中添加数据,如果该key的值已有则不会重复添加
127.0.0.1:6379> sadd myset a b c (integer) 3
smembers key
获取set中所有的成员
127.0.0.1:6379> sadd myset a b c (integer) 3 127.0.0.1:6379> smembers myset 1) "c" 2) "a" 3) "b"
srem key members[member1、member2…]
删除set中指定的成员
127.0.0.1:6379> srem myset a b (integer) 2 127.0.0.1:6379> smembers myset 1) "c" 127.0.0.1:6379>
其他
sadd myset redis
smembers myset 数据集合
srem myset set1 删除
sismember myset set1 判断元素是否在集合中
scard key_name 个数
sdiff | sinter | sunion 操作:集合间运算:差集 | 交集 | 并集
srandmember 随机获取集合中的元素
spop 从集合中弹出一个元素
6.zset(sorted set)
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double
类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却
可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1
(4294967295, 每个集合可存储40多亿个成员)。
zadd key score member [score member ...]
向有序集合中加入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原有的分数。返回值是
新加入到集合中的元素个数,不包含之前已经存在的元素。
127.0.0.1:6379> zadd scoreboard 80 zhangsan 89 lisi 94 wangwu (integer) 3 127.0.0.1:6379> zadd scoreboard 97 lisi (integer) 0
zscore key member
获取元素的分数
127.0.0.1:6379> zscore scoreboard lisi "97"
zrem key member [member ...]
移除有序集key中的一个或多个成员,不存在的成员将被忽略。当key存在但不是有序集类型时,返回一个错 误。
127.0.0.1:6379> zrem scoreboard lisi (integer) 1
zrange key start stop [WITHSCORES]
按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端的元素)
127.0.0.1:6379> zrange scoreboard 0 2
1) "zhangsan"
2) "wangwu"
3) "lisi“
zrevrange key start stop [WITHSCORES]
按照元素分数从大到小的顺序返回索引从start到stop之间的所有元素(包含两端的元素)
127.0.0.1:6379> zrevrange scoreboard 0 2 1) " lisi " 2) "wangwu" 3) " zhangsan 如果需要获得元素的分数的可以在命令尾部加上WITHSCORES参数 127.0.0.1:6379> zrange scoreboard 0 1 WITHSCORES 1) "zhangsan" 2) "80" 3) "wangwu" 4) "94"
其他
zadd zset 1 one
zadd zset 2 two
zadd zset 3 three
zincrby zset 1 one 增长分数
zscore zset two 获取分数
zrange zset 0 -1 withscores 范围值
zrangebyscore zset 10 25 withscores 指定范围的值
zrangebyscore zset 10 25 withscores limit 1 2 分页
Zrevrangebyscore zset 10 25 withscores 指定范围的值
zcard zset 元素数量
Zcount zset 获得指定分数范围内的元素个数
Zrem zset one two 删除一个或多个元素
Zremrangebyrank zset 0 1 按照排名范围删除元素
Zremrangebyscore zset 0 1 按照分数范围删除元素
Zrank zset 0 -1 分数最小的元素排名为0
Zrevrank zset 0 -1 分数最大的元素排名为0
Zinterstore
zunionstore rank:last_week 7 rank:20150323 rank:20150324 rank:20150325 weights 1 1 1 1 1 1 1

浙公网安备 33010602011771号