key操作命令
1:获取所有键(*)
语法:keys pattern
查找所有符合给定模式pattern(正则表达式)的 key ,时间复杂度为O(N),N为数据库里面key的数量。
keys *
支持的正则表达模式:
h?llo 匹配 hello,hallo 和 hxllo
h*llo 匹配 hllo 和 heeeello
h[ae]llo 匹配 hello 和 hallo, 但是不匹配 hillo
h[^e]llo 匹配 hallo, hbllo, … 但是不匹配 hello
h[a-b]llo 匹配 hallo 和 hbllo
2:获取键的总数
dbsize
获取键总数时不会遍历所有的键,直接获取内部变量,时间复杂度O(1)。
3:查询键是否存在
exists key [key...]
查询查询多个,返回存在的个数。
4:删除键:
del key [key...]
可以删除多个,返回删除成功的个数。
5:查询键的类型
type key
6:移动键到其他的仓库
move key db
7:查询键的声明周期(秒)
秒语法:ttl key 毫秒语法:pttl key
"-1" 永不过期。
8:设置过期时间
秒语法:expire key seconds 毫秒语法:pexpire key millisconds
9:设置永不过期
persist key
10:更改键名称
rename key newkey
字符串String操作命令
字符串是Redis中最基本的数据类型,单个数据能存储的最大空间是512M。
1:存放键值
set key value [EX seconds][PX milliseconds][NX|XX]
nx:如果key不存在则建立,xx:如果key存在则修改其值,也可以直接使用setnx/setex命令。
2:获取键值
get key
3:值递增/递减
如果字符串中的值是数字类型的,可以使用incr命令每次递增,不是数字类型则报错。
incr key
一次想递增N用incrby命令,如果是浮点型数据可以用incrbyfloat命令递增。
同样,递减使用decr、decrby命令。
4:批量存放键值
mset key value [key value...]
5:批量获取键值
mget key [key...]
Redis接收的是UTF-8的编码,如果是中文一个汉字将占3位返回。
6:获取值长度
strlen key
7:追加内容
append key value
向键值尾部添加,如上命令执行后由1变成123
8:获取部分字符
getrange key strat end
集合操作命令
集合类型和列表类型相似,只不过是集合是无序且不可重复的。
集合Set
1:存储值
sadd key member [member...]
这里有八个值,其中有两个java,会去重只保存七个
2:获取元素
获取所有元素语法:smembers key
随机获取元素语法:srandmember langs count
3:判断集合是否存在元素
sismember key member
4:获取集合元素个数
scard key
5:删除集合元素
srem key member [member...]
6:弹出元素
spop key [count]
有序集合sorted set
和列表的区别:
- 列表使用链表实现,两头快,中间慢。有序集合是散列表和跳跃表实现的,即使读取中间的元素也比较快。
- 列表不能调整元素位置,有序集合能。
- 有序集合比列表更占内存。
1:存储值
zadd key [NX|XX] [CH] [INCR] score member [score member …]
2:获取元素分数
语法:zscore key member
获取排名范围排名语法:zrange key start stop [WITHSCORES]
获取所有,没有分数。
获取所有,以及分数。
获取指定分数范围排名语法:zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
3:增加指定元素分数
语法:zincrby key increment member
4:获取集合元素个数
语法:zcard key
5:获取指定范围分数元素个数
语法:zcount key min max
6:删除指定元素
语法:zrem key member [member …]
7:获取元素排名
语法:zrank key member
列表List操作命令
列表类型是一个有序的字段串列表,内部是使用双向链表实现,所有可以向两端操作元素,获取两端的数据速度快,通过索引到具体的行数比较慢。
列表类型的元素是有序且可以重复的。
1:存储值
左端存值语法:lpush key value [value …]
右端存值语法:rpush key value [value …]
索引存值语法:lset key index value
2:弹出元素
左端弹出语法:lpop key
右端弹出语法:rpop key
3:获取元素个数
语法:llen key
4:获取列表元素
两边获取语法:lrange key start stop
获取所有
从右端索引
索引获取语法:lindex key index
从右端获取
5:删除元素
根据值删除语法:lrem key count value
删除所有对应值
从左端删除前count个
从右端删除前count个
范围删除语法:ltrim key start stop
散列Hash操作命令
redis字符串类型键和值是字典结构形式,这里的散列类型其值也可以是字典结构。
1:存放键值
单个语法:hset key field value
多个语法:hmset key field value [field value …]
不存在时语法:hsetnx key field value
2:获取字段值
单个语法:hget key field
多个语法:hmget key field [field …]
获取所有键与值语法:hgetall key
获取所有字段语法:hkeys key
获取所有值语法:hvals key
3:判断字段是否存在
语法:hexists key field
4:获取字段数量
语法:hlen key
5:递增/减
语法:hincrby key field increment
6:删除字段
语法:hdel key field [field …]