https://www.redis.net.cn/order/3549.html
一些基本命令命令操作
dbsize
显示当前库的key的个数
flushdb
清除当前数据库的数据
flushall
清除所有库的数据
select 2
redis默认16个数据库,这个命令是选择2号库
keys *
keys * 显示当前库的所有key
exists key
key是否存在,存在返回1,不存在返回0
del key
删除key
move key db num
将key移动到哪个数据库中
expire key 秒
设置 key的过期时间
ttl key
查看key的过期时间
当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key 的剩余生存时间。
type key
查看key的类型
redis常用数据类型
String
基本的数据类型
一个key对应一个value
一个redis中字符串value最多可以是512M
set/get/del/append/strlen
incr/decr/incrby/decrby
字符串必须是数字,才可以执行这些命令,
incr/decr key 加/减 1
incrby/decrby key 数字 加/减 数字
getrange/setrange
getrange返回指定位置的字符串,setrange,指定位置插入并覆盖原来的字符
setex(set with expire)键秒值/setnx(set if not exist)
setex 设置key的值以及过期时间
setnx 如果key不存在才会设置
mset/mget/msetnx
mset 同时设置一个或多个 key-value 对
msetnx 命令 - 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
mget 命令 - 获取所有(一个或多个)给定 key 的值。
getset(先get再set)
将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
Hash
类似java里的map
是一个键值对集合
是一个string 类型的field和value的映射表,hash特别适合用于存储对象
类似java里面的Map<String,Object>
hset
返回值
如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。
hget
返回值
返回给定字段的值。如果给定的字段或 key 不存在时,返回 nil
hmset 命令
同时将多个 field-value (域-值)对设置到哈希表 key 中。此命令会覆盖哈希表中已存在的字段。如果哈希表不存在,会创建一个空哈希表,并执行 HMSET 操作。
hmget 命令
获取所有给定字段的值
Hexists 命令
查看哈希表 key 中,指定的字段是否存在
Hincrby 命令
为哈希表 key 中的指定字段的整数值加上增量 increment 。
增量也可以为负数,相当于对指定字段进行减法操作。
如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。
对一个储存字符串值的字段执行 HINCRBY 命令将造成一个错误。
本操作的值被限制在 64 位(bit)有符号数字表示之内。
Hlen 命令
获取哈希表中字段的数量
Hdel 命令
删除一个或多个哈希表字段
Hvals 命令
获取哈希表中所有值,一个包含哈希表中所有值的表。 当 key 不存在时,返回一个空表。
hkeys命令
获取所有哈希表中的字段,包含哈希表中所有字段的列表。 当 key 不存在时,返回一个空列表。
Hincrbyfloat 命令
为哈希表 key 中的指定字段的浮点数值加上增量 increment
执行 Hincrbyfloat 命令之后,哈希表中字段的值。
Hsetnx 命令
只有在字段 field 不存在时,设置哈希表字段的值
Redis Hsetnx 命令用于为哈希表中不存在的的字段赋值 。
如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
如果字段已经存在于哈希表中,操作无效。
设置成功,返回 1 。 如果给定字段已经存在且没有操作被执行,返回 0 。
List
redis列表是简单的字符串列表,按照插入顺序排序。
底层实际是个链表
lpush/rpush/lrange
lpush头插法,rpush尾插法
lrange key 0 -1 表示取key里的全部元素
lpop/rpop
lpop取第一个元素,rpop取最后一个。双向链表
lindex
按照索引下标获得元素
llen
长度
lrem key
删除n个value
下边的例子 删除 2 个 5
当列表里只有一个value时,但是执行命令要删除多个value。也可以成功
ltrim
ltrim key start end 截取指定范围的值后在赋值给key
rpoplpush
rpoplpush 源 目标
源的尾到目标的头
lset key index value
以新的value值覆盖原来index位置的值
linsert key before/after 值1 值2
总结
如果键不存在,则创建新的列表
如果键已存在,新增内容
如果值全移除,对应的键也消失了
头尾操作效率很高,但是对中间元素进行操作,效率就一般了
Set
是 string类型的无序集合。它是通过hashTable实现的
sadd/smembers
scard
获取集合里边的元素个数
srem key value 删除集合元素
srandmember key 某个整数
随机出几个数,不会改变原有集合
spop key
随机出栈
smove key1 key2 key1里的某个值
作用是将key1里的某个值赋给key2,key2不存在会直接创造key2
数学集合类
- 差集 sdiff
- 交集 sinter
- 并集 sunion
sorted Set
zset和set一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数
redis正式通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的。但是分数(score)却可以重复
zadd
向有序集合添加一个或多个成员,或者更新已存在成员的分数
Redis Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中。
如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。
分数值可以是整数值或双精度浮点数。
如果有序集合 key 不存在,则创建一个空的有序集并执行 ZADD 操作。
当 key 存在但不是有序集类型时,返回一个错误。
redis常见数据类型操作命令
http://redisdoc.com/