这是我参与8月更文挑战的第8天,活动详情查看:8月更文挑战
概述
redis是实际项目中经常用作缓存的数据库,因为其支持丰富的数据类型,所以其应用范围特别广,本篇将记录和介绍下自己所理解和熟知的数据类型,主要内容包含如下
- string类型以及其常用的命令以及示例
- hash类型以及常用的命令以及示例
- list类型以及常用命里和示例
string类型以及其常用的命令以及示例
stirng类型
string类型是redis中最基础的数据类型,一个key最多能存储512MB的数据
常用命令
命令 | 功能描述 | 语法 | 示例 |
---|---|---|---|
set | 设置key对用的值为value | set key value [EX Seconds] [PX milliseconds] [Nx] | set testStr 'test' |
get | 设置key获取对应的value,如果返回结果为空将返回nil,如果键值不是字符串类型则返回报错 | get key | get testStr |
getrange | 返回字符串的一部分 | getrange key 起始点 结束点 | getrange testStr 0 4 |
getset | 设置指定key的值,并返回旧值 | getset key value | getset testStr2 'comming' |
mset | 一次设置多个键值对 | mset key value [key value ...] | mset key1 'value1' key2 'value2' |
mget | 一次获取多个键值对 | mget key1 key2 | mget key1 key2 |
strlen | 获取key字符长度 | strlen key | strlen key |
setrange | 将字符串中国的某一部分换成其他zhi ,并返回修改后的字符串长度 | setrange key offset value | setrange testStr 6 'queen' |
setnx | NS代表not exists,只有key不存在的时候才会设置成功,避免覆盖 | setnx key value | setnx testStr 'king' |
setex | 原子性操作,设置key的过期时间,设置生存时间与设置值在同一个动作内完成 | setex key 时间 value值 | setex testStr 60 'expired string' |
msetnx | 一次设置多个key的值,类似mset,但只有key不存在的时候才能设置成功,当有一个key是已经存在,那么所有的key都会设置失效,成功返回整形1,失败返回0 | mset key value [key value ...] | msetnx testStr1 'a' testStr2 'b' |
psetex | 与setex相似,P代表以毫秒为单位设置key的生存时间,使用pttl获取key剩余存活时间 | psetex key millionseconds vlaue | psetex test16 2000 'hello,world' |
incr | 对key中存储的数字+1,如果key不存在则先初始化为0,在执行INCR。如果值超出了范围或者非整数则会报错 | incr key | incr testStr |
incrby | 将key中存储的数字加上指定整形增量(只支持整形数字,不支持浮点数) | incrby key number | incrby testStr 5 |
decr | 将key中存储的数字减一 | decr key | incrby decrStr |
decrby | 将key中存储的数字递减指定整形增量(只支持整形数字,不支持浮点数) | decrby key decrement | decrby decrStr 5 |
append | 在值的末尾追加字符,如果key不存在则相当于set操作 | append key value | append appStr '12' |
hash类型以及常用命令
hash类型
hash类型又称为散列表。也是一个键值对的集合。适用于存储对象,将对象存入hash表中能节省内存。
- hash-max-ziplist-entries 512 表示hash类型存储的最大值,512个字节
- hash-max-ziplist-value 64 设置hash类型存储字段的数目,默认64个
常用命令
命令 | 功能描述 | 语法 | 示例 |
---|---|---|---|
hset | 将hash表key中的阈field设置成指定的value | hset key field value | hset userInfo username 'test' |
hget | 返回hash表key指定field的值 | hget key field | hget userInfo username |
hsetnx | hash表中field不存在时候才复制,相当于not exist | hsetnx key field value | hsetnx testHash key1 'a' |
hmset | 同时将多个field-value设置到hash表的key中,如果field存在,值则会覆盖 | hsetnx key field value field value ... | hset userInfo username 'name1' password 'password' |
hmget | 一次获取hash表中多个field的值,如果key中的field不存在,则返回nil | hmget key field field2 | hmget userinfo username password email |
hgetall | 返回hash表中key中所有field和value,奇数行是key,偶数行是value | hgetall key | hgetall userinfo |
list类型以及常用命令
list类型
列表类型,是一个简单的字符串列表,通过插入顺序排序,最多存储2的32次方减一个元素,底层是通过双向链表实现,获取越接近两端的元素越快,列表通过
相关命令
命令 | 功能描述 | 语法 | 示例 |
---|---|---|---|
lpush | 向列表左端添加元素,一次可以添加一个或者多个 | lpush key value1 value2 | lpush mylist a b c |
rpush | 向列表右端添加元素,一次可以添加一个或者多个 | rpush key value1 value2 | rpush mylist a b c |
lpushx | 向列表左端添加元素,一次可以添加一个或者多个,但是只有key存在时候才添加元素 | lpushx key value1 value2 | lpushx mylist a b c |
rpushx | 向列表右端添加元素,一次可以添加一个或者多个,但是只有key存在时候才添加元素 | rpushx key value1 value2 | rpushx mylist a b c |
lpop | 将列表头部一个元素弹出 | lpop key | lpop mylist |
rpop | 将列表尾部一个元素弹出 | rpop key | rpop mylist |
llen | 获取列表的长度 | llen key | llen mylist |
lrange | 获取列表片段,0代表列表的第一个元素,1表示列表的第二个元素,-1代表最后一个元素,复数代表从后往前数 | lrange key start stop | lrange mylist 0 -1 |
lrem | 删除列表中指定的参数,count中分为几种情况,大于0表示从列表的头开始,向尾部搜索,移除与value相等数量的元素,移除count个;小于0表示从尾部向头部搜索,移除与value相等的元素,移除count个;等于0表示移除列表中所有与value相等的元素 | lrem key count value | lrem mylist 2 a |
lindex | 获取指定索引元素的值,根据索引找到之,命令后面跟一个数字,可以是正数也可以是负数 | lindex key index start | lindex mylist 2 |
lset | 设置指定索引的值,根据索引设置值 | lset key index value | lset mylist 2 king |
ltrim | 只保留列表的片段,其他都删除,只保留起点到结束点之间的元素 | ltrim key start end | ltrim mylist 0 1 |
linsert | 向列表中插入元素,插入pivot之前或者之后,当pivot不存在时不做操作 | linsert key before/after pivot value | linsert mylist BEFORE 'b' 'king' |