redis数据类型
String字符串
- set key value [EX seconds] [PX milliseconds] [NX|XX]
- 设置key及值, 过期时间可以使用秒或毫秒为单位
[root@redisClient ~]# redis-cli
127.0.0.1:6379> set first "hello world"
OK
- setrange key offset value
- 从偏移量开始复写key的特定位的值
127.0.0.1:6379> setrange first 6 "Redis" # 将first的值从第6个字符改为Redis
(integer) 11
127.0.0.1:6379> get first
"hello Redis"
127.0.0.1:6379> setrange first 6 "wor" #
(integer) 11
127.0.0.1:6379> get first
"hello woris"
- strlen key
- 统计字串长度
127.0.0.1:6379> strlen first
(integer) 11 # 字符串共11 个字符
- append key value
- 存在则追加值 返回key长度
- 不存在则创建key及value 返回key长度
127.0.0.1:6379> append first test # 有则直接追加, 返回长度
(integer) 15
127.0.0.1:6379> get first
"worlo woristest"
127.0.0.1:6379> keys *
1) "first"
127.0.0.1:6379> append second test # 无则创建key及value, 返回长度
(integer) 4
127.0.0.1:6379> get second
"test"
127.0.0.1:6379> keys *
1) "second"
2) "first"
- setbit key offset value
- 对key所存储字串, 设置或清除特定偏移量上的位(bit)
- value值可以为1或0, offset为0 ~ 2^32之间
- key不存在, 则创建新key
# 补充 :
# 1MB = 1024KB 1KB = 1024Bite (字节) 1Bite = 8 bit(位)
# 1 位存储的值为 0 或 1
127.0.0.1:6379> setbit bit 0 1 # 设置bit的第0位为1
(integer) 0
127.0.0.1:6379> setbit bit 1 0 # 设置bit的第1位为0
(integer) 0
- bitcount key [start end]
- 统计字串中被设置为1的比特位数量
127.0.0.1:6379> setbit bit 2 1 # 101
(integer) 0
127.0.0.1:6379> setbit bit 3 1 # 1011
(integer) 0
127.0.0.1:6379> BITCOUNT bit
(integer) 3
# 应用场景, 记录网站用户上线频率, 如用户A上线了多少天等类似的数据
# 如用户在某天上线, 则使用setbit, 以用户名为key, 将网站上线日为offset
# 并在该offset上设置1 , 最后计算用户总上线次数时, 使用bitcount用户名即可
# 这样, 即使网站运行10年, 每个用户仅占用10 * 365比特位即3650 /8 = 456 字节
127.0.0.1:6379> setbit peter 100 1 # 网站上线100天用户peter登录了一次
(integer) 0
127.0.0.1:6379> setbit peter 105 1 # 网站上线105天用户peter登录了一次
(integer) 0
127.0.0.1:6379> bitcount peter # 用户peter总共登录了两次
(integer) 2
- decr key
- 将key中的值减1, key不存在则先初始化为0, 在减1
127.0.0.1:6379> set test 10
OK
127.0.0.1:6379> get test
"10"
127.0.0.1:6379> decr test
(integer) 9
127.0.0.1:6379> get test
"9"
- decrby key decrement
- 将key中的值, 减去decrement
127.0.0.1:6379> set count 200
OK
127.0.0.1:6379> decrby count 100
(integer) 100
127.0.0.1:6379> get count
"100"
-
get key
- 返回key存储的字符串值, 若key不存在则返回null
- 若key的值不是字串, 则返回错误, get只能处理字串
-
getrange key start end
- 返回字串值中的子字串, 截取范围为start和end
- 负数偏移量表示从末尾开始计数, -1 表示最后一个字符, -2 表示倒数第二个字符
127.0.0.1:6379> getrange test 0 1 # 获取test的第0个到第1个字符
"9c"
- incr key
- 将key的值加1 , 如果key不存在, 则初始为0 后再加1
- 主要应用为计数器
127.0.0.1:6379> incr n # 此前n不存在
(integer) 1
127.0.0.1:6379> get n
"1"
- incrby key increment
- 将key的值增加increment
127.0.0.1:6379> incrby n 100
(integer) 101
- incrbyfloat key increment
- 为key中所存储的值加上浮点数增量 increment
127.0.0.1:6379> set num 7.7
OK
127.0.0.1:6379> type num
string
127.0.0.1:6379> INCRBYFLOAT num 1.1
"8.8"
- mget key [key…]
- 获取一个或多个key的值, 空格分隔, 具有原子性
127.0.0.1:6379> mget num test
1) "8.8"
2) "9cil"
- mset key value [key value …]
- 设置多个key及值, 空格分割, 具有原子性
127.0.0.1:6379> mset a 1 b 2 c 3
OK
127.0.0.1:6379> mget a b c
1) "1"
2) "2"
3) "3"
List列表
- List列表简介
- Redis的list是一个字符队列
- 先进后出
- 一个key可以有多个值
List表操作
命令格式 | 含义 |
---|---|
lpush key value [value …] | 将一个或多个值value插入到列表key的表头 key不存在, 则创建key |
lrange key start stop | 从开始位置读取key的值到stop结束 |
lpop key | 移除并返回列表头元素数据(即最后存入的一位) key不存在则返回nil |
llen key | 返回列表key的长度 |
lindex key idnex | 返回列表中第index个的值 |
lset key index value | 将key中index位置的值修改为value |
rpush key value [value…] | 将value插入到key的末尾 |
rpop key | 删除并返回key末尾的值 |
- lpush key value [value …]
- 将一个或多个值value插入到列表key的表头
- key不存在, 则创建key
127.0.0.1:6379> lpush list a b c
(integer) 3
- lrange key start stop
- 从开始位置读取key的值到stop结束
127.0.0.1:6379> lrange list 0 2 # 从第 0 位读到第 2 位
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> LRANGE list 0 -1 # 从第0 位读到倒数第1位 即全读
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> lrange list 0 -2 # 从第 0 位 读到倒数第 2 位
1) "c"
2) "b"
- lpop key
- 移除并返回列表头元素数据(即最后存入的一位), key不存在则返回nil
127.0.0.1:6379> lpop list
"c"
127.0.0.1:6379> lrange list 0 -1
1) "b"
2) "a"
- llen key
- 返回列表key的长度
127.0.0.1:6379> llen list
(integer) 2
- lindex key idnex
- 返回列表中第index个的值
127.0.0.1:6379> lindex list 0
"b"
127.0.0.1:6379> lindex list 1
"a"
127.0.0.1:6379> lindex list 2 # 没有第2个值, 则返回为空
(nil)
127.0.0.1:6379> lindex list -1 # 返回倒数第1个值
"a"
127.0.0.1:6379> lindex list -2
"b"
- lset key index value
- 将key中index位置的值修改为value
127.0.0.1:6379> lset list 1 test
OK
127.0.0.1:6379> lrange list 0 -1
1) "b"
2) "test"
- rpush key value [value…]
- 将value插入到key的末尾
127.0.0.1:6379> rpush list a
(integer) 3
127.0.0.1:6379> LRANGE list 0 -1
1) "b"
2) "test"
3) "a"
- rpop key
- 删除并返回key末尾的值
127.0.0.1:6379> rpop list
"a"
127.0.0.1:6379> LRANGE list 0 -1
1) "b"
2) "test"
Hash表
- Redis Hash
- 是一个string类型的field(字段)和value的映射表
- 一个key可对应多个field, 一个field对应一个value
- 将一个对象存储为hash类型, 较于每个字段都存储成string类型更能节省内存
Hash表操作
命令 | 含义 |
---|---|
hset key field value | 将hash表中field值设置为value |
hget key filed | 获取hash表中field的值 |
hmset key field value [field value …] | 同时给hash表中的多个field赋值 |
hmget key field [field…] | 返回hash表中多个field的值 |
hkeys key | 返回hash表中所有field名称 |
hgetall key | 返回hash表中所有field和field的值 |
hvals key | 返回hash表中所有field的值 |
hdel key field [field …] | 删除hash表中多个field的值, 不存在则忽略 |
- hset key field value
- 将hash表中field值设置为value
127.0.0.1:6379> hset site google 'www.g.cn'
(integer) 1
127.0.0.1:6379> hset site baidu 'www.baidu.com'
(integer) 1
127.0.0.1:6379> type site
hash
- hget key filed
- 获取hash表中field的值
127.0.0.1:6379> hget site google
"www.g.cn"
127.0.0.1:6379> hget site baidu
"www.baidu.com"
- hmset key field value [field value …]
- 同时给hash表中的多个field赋值
127.0.0.1:6379> hmset site tedu www.tmooc.cn alibaba www.taobao.com
OK
- hmget key field [field…]
- 返回hash表中多个field的值
127.0.0.1:6379> hmget site tedu alibaba
1) "www.tmooc.cn"
2) "www.taobao.com"
- hkeys key
- 返回hash表中所有field名称
127.0.0.1:6379> hkeys site
1) "google"
2) "baidu"
3) "tedu"
4) "alibaba"
- hgetall key
- 返回hash表中所有field和field的值
127.0.0.1:6379> hgetall site
1) "google"
2) "www.g.cn"
3) "baidu"
4) "www.baidu.com"
5) "tedu"
6) "www.tmooc.cn"
7) "alibaba"
8) "www.taobao.com"
- hvals key
- 返回hash表中所有field的值
127.0.0.1:6379> hvals site
1) "www.g.cn"
2) "www.baidu.com"
3) "www.tmooc.cn"
4) "www.taobao.com"
- hdel key field [field …]
- 删除hash表中多个field的值, 不存在则忽略
127.0.0.1:6379> hdel site google
(integer) 1
127.0.0.1:6379> hget site google
(nil)