# Redis 数据结构

# String字符串

set 命令 设置新值 get 命令 获取值 getset 命令 设置新值,返回旧值 没有旧值返回Nil ,旧值不是字符串类型,返回错误 setbit 用于设置指定key的值,并返回key的旧值 getbit 用于设置对key所储存的字符串的值,获取指定偏移量上的位(bit setex 为指定key设置新值 和有效时间,成功返回ok (timeout 的单位是miao)

setnx 为不存在的key 设置值,成功返回1 不成功返回0

setrange 用指定的字符串覆盖给定key所储存的字符串值,覆盖的位置从偏移量OFFSET开始 strlen 用于获取指定key所储存的字符串值的长度。当key储存的不是字符串值时,返回一个错误

mset 用于同时设置一个或多个key-value值对 msetnx 用于在所有给定key都不存在时,同时设置一个或多个key-value值对。

psetnx 以毫秒为单位设置过期时间

psetex msg6 5000  many

incr 将key中储存的数字值增加1,如果key不存在,那么key的值会先被初始化为0,然后再执行INCR操作;如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。本操作的值限制在64位(bit)有符号数字表示之内

incr numbers

incrby 将key中储存的数字加上指定的增量值,如果key不存在,那么key的值会先被初始化为0,然后再执行INCRBY命令;如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。本操作的值限制在64位(bit)有符号数字表示之内

incrby num 10  按照指定数字进行递增

incrbyfloat 为key中所储存的值加上指定的浮点数增量值,如果key不存在,那么INCRBYFLOAT会先将key的值设为0,再执行加法操作

浮点数递增,用于浮点(小数)计算

递减 decr 没有值就初始化为0,然后自动减1 decrby 没有值就初始化为0 ,然后安装指定的数字递减 decrbyfloat redis 没有实现, 用incrybyfloat 和负数进行实现

decr num
decrby num2 2

append 用于为指定的key追加值,如果key已经存在并且是一个字符串,APPEND命令将value追加到key原来的值的末尾;如果key不存在,APPEND就简单地将给定key设为value,就像执行SET key value一样

# hash 哈希

hset 设置 hash 列表 字段 值

hest user name zs

hvals 获取hash对象所有的filed字段的值

hsetex 如果不存在 该hash对象则创建,如果对象已经存在则操作无效

hmset 批量设置hash对象的字段和值

hmset student name xiaoming age 18 telphone 13012345678

hmget 批量获取hash对象指定字段的值

hmget student age name telphone

hget 获取hash对象指定字段的值

hkeys 获取hash对象所有key的名称

hlen 获取hash 对象中key 的数量

hgetall 获取hash对象中所有的key 和value

127.0.0.1:6379> hgetall student
1) "name"
2) "xiaoming"
3) "age"
4) "18"
5) "telphone"
6) "13012345678"

hincrby 给指定字段递增加1

hincrbyfloat 给指定字段自定义偏移量递增计算

hdel 删除hash 对象

hexists hash对象中是否存在指定key,存在返回1 不存在 返回0

hexists student age

# redis 列表

元素可以重复

lpush 添加一个或多个到列表 lrange 查询指定偏移量的列表中的所有元素

lrange list2 0 -1 (代表查询所有元素,0代表是第一个元素 -1 代表最后一个元素)

lpop 移除指定key的列表中的第一个元素并返回移除掉的元素 rpop 移除指定key的列表中的最后一个元素并返回移除掉的元素 lrem 移除指定key的列表中指定位置的元素,成功返回1 不成功返回0

# redis集合

元素不可以重复 sadd 添加一个或多个到集合 srem 移除指定key的列表中的指定元素

srem list2 ww

scard 集合元素数量,key不存在时返回0 smembers 获取集合中所有的元素 sismember 判断集合中是否存在某元素 spop 随机移除指定key的集合中元素,并将已经删除的元素返回 smove 把集合1中的元素移动到集合b中

smove list1 list2 ww

sdiff 差集 sinter 交集 sunion 并集

# redis 有序集合

zadd 添加一个或多个元素到新的有序集合,也不允许重复 zrem 删除指定key的有序集合中的指定元素 zcard 返回集合中的元素数量 zrange 返回有序集合指定区间内的元素

127.0.0.1:6379> zrange list3 0 3
1) "zs"
2) "1"
3) "ls"
4) "ww"

查询所有元素
zrange list3 0 -1 (-1代表最后一个元素,从第一个元素开始一直到最后一个元素 )

zrank 返回指定元素在指定key的有序集合中的位置

zrank list ls  ,返回结果为2

redis 5种对象类型

# redis 地理位置计算

Geo 对象

geoadd

Redis支持五种数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)及Zsetsorted Set(有序集合)。实际项目中比较常用的是String和Hash,如果是Redis的中高级用户,还可以加上下面几种数据结构HyperLogLog、Geo和Pub/Sub