Redis五种数据类型

redis细节

1、redis启动服务的细节

直接使用./redis-server方式启动,使用的是redis-server这个shell脚本中默认配置。如果想要改配置文件,需要在源码目录中复制redis-conf配置文件到安装目录,启动时:./redis-server ../redis-conf

2、redis中库的概念

database用来存放数据的基本单元,可以放key-value键值对。每一个库都有一个唯一编号,从0开始,默认库的个数为16,库与库之间是隔离的,默认使用0号库,可以在配置文件中配置。使用select index进行切换,比如select 1

redis客户端显示中文,需要启动时加 redis-cli --raw

3、redis中清除库的指令

  • flushDB 清空当前库
  • flushall 清空所有库

常见redis命令

  • keys pattern 查找所有符合给定模式的key,比如*匹配任意多个,?匹配1个,[]匹配[]中的任意一个
  • del key [key...] 删除给定的一个或多个key,不存在的key会被忽略,返回被删除key的数量
  • exists key [key...] 检查给定key是否存在,存在返回1,否则返回0,多个时只要有一个存在就返回1
  • expire key seconds 设置过期时间,默认永久存储,时间为秒
  • move key db 把key移动到指定的库
  • pexpire key milliseconds和expire类似,只是单位为毫秒
  • ttl 剩余过期时间,时间返回为秒,-1表示永久存储,-2表示key不存在,其余表示过期时间
  • pttl 和ttl类似,返回毫秒
  • randomkey 随机返回一个key,如果数据库为空,返回nil
  • rename key newkey 将key改名为newkey,当key和newkey相同或者key不存在时,返回一个错误,如果newkey存在,覆盖值
  • type key 返回key所存储值的类型,none(key不存在),string,list,set,zset,hash

string类型

  • set 设置一个值
  • get 获取一个值
  • mset 一次设置多个值 mset name zhangsan age 18 bir 2021-12-12
  • mget 一次获取多个值 mget name age bir
  • getset 获取原始key的值,同时设置新值
  • strlen 获得对应key存储value的长度
  • append 为对应key的value追加内容
  • getrange 索引0开始,截取value的内容,不会修改原值。比如 getrange name 2 -1 返回2到末尾的值
  • setex 设置值的时候就设置一个超时时间(秒),比如setex name 10 zhangsan
  • psetex 设置值的时候就设置一个超时时间(毫秒)
  • setnx 存在不做任何操作,不存在添加。成功返回1,否则返回0
  • msetnx 可以同时设置多个key,原子操作(只要有一个key存在,就不做任何操作)
  • decr 自减1
  • decrby 自减给定的值
  • incr 自增
  • incrby 自增给定的值
  • incrbyfloat 增加浮点数,比如 incrbyfloat age 1.3333333344444444444444

list

list是有序,可重复的,可以从左边添加元素,也可以从右边添加元素

  • lpush key [value...] 将值加入到一个key的列表头部,比如:lpush lists a b c d e
  • lpushx key value 同lpush,但必须保证key存在,比如: lpushx lists f
  • rpush key [value...] 将值加入到一个key的列表尾部,比如:rpush list g h i j k
  • rpushx key value 同rpush,但必须保证key存在,比如:rpushx list l
  • lpop 返回和移除列表左边的第一个元素,比如: lpop lists 返回 "f"
  • rpop 返回和移除列表右边的第一个元素,比如: rpop lists 返回"a"
  • lrange 获取某一个下标区间内的元素,比如:lrange list 0 -1 表示遍历所有
  • llen 获取列表元素的个数,比如: llen lists
  • lset 设置某一个指定索引的值(索引必须存在),比如: lset list 0 gg
  • lindex 获取某一个指定索引位置的元素,比如: lindex list 0
  • lrem 删除重复元素,比如lrem list 2 gg 表示删除2个gg
  • ltrim 保留列表中特定区间内的元素,会操作原数组,比如 ltrim list 0 2
  • linsert在某一个元素之前,之后插入新元素,重复时从左到右匹配,比如 linsert list before i h

Set类型

Set类型也是集合,元素无需,不可以重复

  • sadd: 为集合添加元素, 比如: sadd sets aa bb cc dd ee
  • smembers:显示集合中的所有元素,比如: smembers sets
  • scard:返回集合中元素的个数,比如:scard sets
  • spop:随机返回一个元素,并将元素在集合中删除,比如:spop sets
  • smove:从一个集合中向另一个集合移动元素,比如: smove set1 sets xx
  • srem:从集合中删除一个或多个元素, 比如:srem set1 zz cc
  • sismember:判断一个集合中是否含有这个元素,含有返回1,否则为0,比如 sismember setx aa
  • srandmember:随机返回元素,不会删除,比如:srandmember sets 2
  • sdiff:去掉第一个集合中其他集合含有的相同元素,比如:sdiff sets1 sets2
  • sinter:求交集
  • sunion:求并集

ZSet类型

特点:可排序的set集合,可以排序,不可重复。每个元素都带了一个分数,排序是靠分数实现的,又称可排序Set或者SortSet

  • zadd 添加一个有序集合元素,比如 zadd zset1 10 zhangsan 9 xiaochen 8 xiaoming
  • zcard 返回集合的元素个数,比如 zcard zset1
  • zrange 升序 返回一个范围内的元素,比如 zrange zset1 0 -1 withscores 会展示分数
  • zrangebyscore 按照分数查找一个范围内的元素,包含边界,比如 zrangebyscore zset1 9 10 limit 0 1 进行分页
  • zrevrange 降序 返回一个范围内的元素
  • zrank 返回排名,比如 zrank zset1 zhangsan
  • zrevrank 倒序排名,比如 zrevrank zset1 zhangsan
  • zscore 显示一个元素的分数,比如 zscore zset1 zhangsan
  • zrem 移除某一个或多个元素,比如 zrem zset1 zhangsan xiaochen
  • zincrby 给某个元素加分,比如 zincrby zset1 90 xiaoming

hash类型

特点:value是一个map结构,存在key-value,key无序

  • hset 设置一个key/value对,比如 hset hash1 name zhangsan
  • hget 获得一个key对应的value,比如 hgge hash1 name
  • hgetall 获得所有的key/value对,比如 hgetall hash1
  • hdel 删除某一个key/value 对,比如 hdel hash1 name height
  • hexists 判断一个key是否存在,比如 hexists hash1 name
  • hkeys 获得所有的key,比如 hkeys hash1
  • hvals 获得所有的value,比如 hvals hash1
  • hmset 设置多个key/value,比如 hmset hash1 bir 2020-12-12 address beijing clazz 2011
  • hmget 获得多个key的value,比如 hmget hash1 name age bir
  • hsetnx 设置一个不存在的key的值,比如 hsetnx hash1 jiguan chq
  • hincrby为value进行加法运算,比如 hincrby hash1 age 100
  • hincrbyfloat 为value加入浮点值,比如 hincrbyfloat hash1 age 1.455555555555555555
原文地址:https://www.cnblogs.com/ginb/p/14471668.html