目录
Redis支持五种数据类型:String, Hash, List, Set, ZSet,这个系列介绍一下如何使用这些数据类型,本篇介绍使用命令行模式以及python客户端对redis进行操作,实际项目的过程中也大多是一模一样的用法。
相关内容:
Redis系列(一)、CentOS7下安装Redis6.0.3稳定版
------------------------Redis哈希类型----------------------
介绍
哈希类型是指键值对里的value本身存储的也是一个个的KV键值对,类似于python中的dict和java中的map集合。
hash_value={{field1,value1},...{fieldN,valueN}}
hkey-->hvalue
hvalue{k1:v1 ,k2:v2 ,k3:v3...}
命令行模式
进入命令行模式:
redis-cli -a password_value
redis-cli -a password_value --raw
--raw 避免中文显示乱码
help
使用下面的命令查看手册:
help @hash
hexists
查看hash类型的key中指定的field是否存在,返回true / false, 1/0
hexists key field
增
hset
可设置hash类型的单个field或一次性设置多个field
HSET key field value [field value ...]
hset csdn id 1 name wyk company CSDN
hset csdn gender male
hmset
redis6版本中与hset效果一样
hsetnx
只有value中不存在的field才会被创建,若field已存在则不做任何动作:
HSETNX key field value
删
hdel
使用hdel命令删除hash类型的value中的fields,可批量可单个删除:
HDEL key field1 [field2 ...]
改
hset
和上面介绍的使用方式一样,对hash类型中相同的field进行set操作会更新该field的值:
HSET key field value [field value ...]
查
hget
使用hget获取指定hash类型的field对应的值:
HGET key field
hmget
使用hget获取指定hash类型的多个field对应的值:
HMGET key field [field ...]
hgetall
使用hgetall获得指定hash类型对象的全部field和对应的value值:
HGETALL key
hkeys
使用hkeys获得指定hash类型对象的全部field:
HKEYS key
hvals
使用hvals获得指定hash类型对象的全部field的values值:
HVALS key
计数
hincrby
与string类型中的incrby类似,hincrby可以对hash对象的指定的field的value做递增操作,increment必须是整数(hash类型中没有hdecrby方法,当increment为负数时为递减操作),value必须是integer类型,否则会报对应的错误:
HINCRBY key field increment
#filed对应的value必须是integer类型,increment必须是整数,可以为负
hincrbyfloat
与string类型中的incrbyfloat类似,hincrbyfloat可以对hash对象的指定的field的value做递增操作,increment可以是整数或浮点数(hash类型中没有hdecrbyfloat方法,当increment为负数时为递减操作),value必须是数字类型,否则会报对应的错误:
HINCRBYFLOAT key field increment
#filed对应的value必须是数字类型,increment可以是整数或浮点,可以为负
长度
hlen
hlen返回hash类型中field的数量:
HLEN key
hstrlen
hstrlen返回hash类型中指定filed对应的value的字符长度:
HSTRLEN key field
过期
expire
我们可以看到hash类型没有hsetex hpsetex一类的方法,想对hash对象做过期策略可以使用全局函数expire,单位为秒:
expire key seconds
Python客户端
下面介绍如何在python客户端实现和上面一样的操作,每个函数的含义不多赘述,在上面都有很详细的介绍了,可以看到在python客户端中的方法与redis命令行中的一样。
增
hset
和redis客户端中的hset不同的是python客户端中的hset只能设置一个field:
hset(self, name, key, value)
hmset
hmset(self, name, mapping)
hsetnx
hsetnx(self, name, key, value)
删
hdel
hdel(self, name, *keys)
改
hset
hset(self, name, key, value)
查
hget
hget(self, name, key)
hmget
hmget(self, name, keys, *args)
hgetall
hgetall(self, name)
hkeys
hkeys(self, name)
hvals
hvals(self, name)
计数
hincrby
hincrby(self, name, key, amount=1)
hincrbyfloat
hincrbyfloat(self, name, key, amount=1.0)
长度
hlen
hlen(self, name)
hstrlen
hstrlen(self, name, key)
过期
expire
expire(self, name, time)
#time单位为秒
希望本文对你有帮助,请点个赞鼓励一下作者吧~ 谢谢!