Redis常用命令(一) 字符串键、散列键

redis是key-value的数据结构,每条数据都是一个键值对

键的类型是字符串,因为默认是字符串所以都不用加引号

注意:键不能重复

值的类型分为五种:

字符串string

散列hash

列表list

集合set

有序集合zset

  • string字符串键
set key value  # 设置的键不存在则为添加,如果设置的键已经存在则修改
set name daiby

set key value [NX|XX]  # NX: 如果key不存在则成功,反之失败(不覆盖旧值)! XX: 如果key存在则成功,反之失败(一定覆盖旧值)!
set aaa 222 nx  # 如果aaa存在则失败
set aaa 222 xx  # 如果aaa不存在则失败

setnx key value  # 仅在key不存在的情况下,将key的值设置为value,等同于set key value nx

msetnx key value key value # 仅在所有key不存在的情况下,将key的值设置为value

getset key new-value  # 将字符串键的值设置为新值,并返回旧值
getset aaa 444

setex key seconds value  # 设置键值及过期时间,以秒为单位
set age 5 18

get key  # 获取键值
get name

mset key1 value1 key2 value2 ...  # 设置多个键值
mset gender M age 18 addr SH

mget key1 key2 key3...  # 获取多个键值
mget gender age addr

append key value  # 追加值,将内容追加到字符串的末尾
append name 123  --> "daiby123"

strlen key  # 返回字符串键key存储的值的长度,redis会记录每个字符串值的长度,时间复杂度O(1)
strlen aaa

setrange key index value  # 从索引index开始,用value覆写键所存储的字符串值,只接受正数索引
setrange aaa 1 222  --> 4222

getrange key start stop  # 范围取值,返回位于start和end两个索引之间的值,闭区间,索引可以是正数或负数
getrange aaa 0 2
getrange aaa 0 -2

# 只要存储在字符串键里面的值可以被解释为64位整数或者IEEE-754标准的64位浮点数,那么就可以对这个字符串键执行针对数字值的命令
# 即使字符串键存储的是数字值,也可以执行append,strlen,setrange,getrange
incrby key increment  # 将key所存储的值加上增量increment
incrby aaa 100

decrby key decrement  # 将key所存储的值减去减量decrement
decrby aaa 1000

incr key  # 加一,等同于incrby key 1
incr ccc

decr key  # 减一,等同于decrby key 1
decr ccc

incrbyfloat key increment  # 浮点数的自增和自减,没有decrbyfloat,通过给定负值来达到相应的效果
incrbyfloat ccc 1.11
incrbyfloat ccc -23.45

# set,get,setnx,append等命令同样可以用于设置二进制数据
# 与存储文件时索引不同,存储二进制数索引是从左到右递减
>>>import redis
>>>r = redis.StrictRedis()
>>>r.set(‘bites‘, 0b10010100)
>>>bin(int(r.get(‘bites‘)))  # 转换成十进制数是148
>>>r.append(‘bites‘,0b111)   # 十进制数7
>>>bin(int(r.get(‘bites‘)))  # 转换成十进制数是1487

setbit key index value  # 设置二进制位的值,将给定索引上的二级制位的值设置为value
setbit bites 2 1

getbit key index  # 返回给定索引上的二进制位的值
getbit bites 6

bitcount key start end  # 计算并返回字符串存储的值中被设置为1的二进制位的数量
bitcount bites 0 -1

# strlen,setrange,getrange不适用于中文
  • hash散列键用于存储对象,对象的结构为属性、值,值的类型为string。散列的键和值都可以是文字、整数、浮点数或者二进制数据。尽量使用散列键来存储键值对,而不是字符串键,避免命名冲突和节省内存
hset key field value  # 设置单个属性
hset py1 name daiby

hsetnx key field value  # 如果散列键key中,field不存在,则命令成功
hsetnx message addr sh

hmset key field1 value1 field2 value2 ...  # 设置多个属性
hmset py3 name daiby age 18 addr SH

hexists key field  # 查看给定的field是否存在
hexists message addr

hkeys key  # 获取指定键所有的属性
hkeys py3

hvals key  # 获取指定键的所有属性的值
hvals py3

hget key field  # 获取指定键的一个属性的值
hget py1 name

hgetall key  # 返回散列键key包含的所有域值对
hgetall message

hmget key field1 field2 ...  # 获取指定键的多个属性的值
hmget py3 name age addr

hdel key field1 field2 ...  # 删除属性,属性对应的值会被一起删除,如果想删除hash键就把所有的属性都要删除
hdel name age addr

hlen key  # 返回散列键key包含的域值对数量
hlen message

hincrby key field increment  # 为散列键key中field的值加上或减去整数increment
hincrby message id -10

hincrbyfloat key filed increment  # 为散列键key中field的值加上或减去浮点数increment
hincrbyfloat message id +1.1
时间: 2024-10-02 20:50:00

Redis常用命令(一) 字符串键、散列键的相关文章

Redis数据操作--字符串与散列键的区别

| 如果散列键能做的事情,字符串键也能做,那么 我们为什么不直接使用字符串键呢? | 散列的好处 -- 将数据放在同一个地方     # 散列可以让我们将一些相关的信息储存在同一个额地方,而不是直接分散地     储存在整个数据中里面,这不仅方便了数据管理,还可以尽量避免误操作发生.     # 举个例子,要删除字符串键记录的消息信息,我们需要输入三个键,而删除     散列键储存的消息信息,我们只要输入一个键     字符串键:id >> 10086; sender >> pet

Redis常用命令(四)数据库管理、键管理、订阅发布

### 数据库管理 keys pattern  # 查找键,参数通配符查找 keys *  # 查看所有键 keys n*  # 查看以n开头的所有键 keys *e  # 查看以e结尾的所有键 keys h?llo keys h[ae]llo exists name  # 查看name这个键是否存在,存在为1,不存在为0 type key  # 查看键对应的value的类型 type name del key1 key2 ...  # 删除键及对应的值 del addr rename key

Redis常用命令(三)有序集合键、HyperLogLog键

zet 有序集合,元素为string类型,元素具有唯一性,不重复.每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序.没有修改操作,虽然每个元素必不相同,但是score可以相同 zadd key score1 member1 score2 member2 ...  # 添加 zadd fruits 1.0 apple 2.4 banana 4 watermelon 5 orange # 返回指定范围内的元素,索引从左侧开始,第一个元素为0, # 索引可以是负数

Redis数据操作--散列键

| 一个散列由多个域 值对(field-value pair)组成,散列的域和值都可以     是文字,整数,浮点数或者二进制数据. # 同一个散列中每个域必须是独一无二的,而不同域的值可以是重复的. # 操作:设置域值对,获取域的值,检查域是否存在 | 基本操作 -- 关联域值对     hset key field value     # 在散列键key中关联给定的域值对field和value     # 如果域field之前没有关联值,那么命令返回1:     # 如果域field已经有关

Redis数据操作之散列键 | Redis

| 一个散列由多个域 值对(field-value pair)组成,散列的域和值都可以     是文字,整数,浮点数或者二进制数据. # 同一个散列中每个域必须是独一无二的,而不同域的值可以是重复的. # 操作:设置域值对,获取域的值,检查域是否存在 | 基本操作 -- 关联域值对     hset key field value     # 在散列键key中关联给定的域值对field和value     # 如果域field之前没有关联值,那么命令返回1:     # 如果域field已经有关

Redis快速起步及Redis常用命令大全

本系列教程内容提要 Java工程师之Redis实战系列教程教程是一个学习教程,是关于Java工程师的Redis知识的实战系列教程,本系列教程均以解决特定问题为目标,使用Redis快速解决在实际生产中的相关问题,为了更方便的与大家一起探讨与学习,每个章节均提供尽可能详细的示例源码及注释,所有示例源码均可在javacourse-redis-in-action找到相关帮助! 本章目标: 什么是Redis Redis数据结构 Redis常用命令 什么是Redis Redis是一个功能强大的非关系型内存数

自学总结redis第二部分(redis常用命令、高级命令特性以及与java代码的结合)

六.redis多数据类型介绍(常用命令) 6.1前提操作 #如果前面的redis环境没搭好,那么可以先暂时在 "http://try.redis.io/"中实践redis命令部分.   #为了测试方便,把redis登录密码暂时撤销   #redis一共分为五种基本数据类型:String,Hash,List,Set,ZSet #所有命令都可以到"http://www.redis.cn/commands.html"  去搜索到. #首先由于redis是一个基于key-v

Redis 四:存储类型之散列类型

1.散列类型表达方式简介: =========================================== 键 字段 值 =========================================== 前轮 --->富士康 后轮 --->苹果 宝马: 挡风玻璃 --->加多宝 座椅 --->王老吉 方向盘 --->恒大冰泉 =========================================== 散列类型更好的作用于同一个对象,不同属性,对应不同

Redis常用命令入门4:集合类型

集合类型 之前我们已经介绍过了最基本的字符串类型.散列类型.列表类型,下面我们一起学习一下集合类型. 集合类型也是体现redis一个比较高价值的一个类型了.因为Redis的集合类型,所以我们可以很容易的在Redis中执行差集运算.交集运算.并集运算. 首先我们先介绍一下集合类型和列表类型的区别,其实学过面向对象的语言的同学应该都能猜到这些类型有什么不同. ①集合类型和列表类型还是都能存储2^32-1个字符串 ②集合类型是无序的,列表类型是有序的 ③集合类型是唯一的,列表类型的值是不唯一的 下面我