redis数据类型

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值