`

redis 数据类型string list hash set简介

 
阅读更多

 

 1 数据类型之 string类型:

 

字符串类型是redis中最基本的数据类型,它能存储任何形式的字符串,包含二进制数据,甚至是一张图片(二进制内容)。一个字符串类型的值存储的最大容量是1GB
命令

set/get
mset/mget
incr/decr/incrby/decrby/incrbyfloat
append
strlen


解释:

set/get 多次对同名的key执行set后 对应的值会被覆盖掉

mset/mget :同一命令行中对多个参数赋值和取值



incr/decr/incrby/decrby/incrbyfloat incr key :给对应的key的值增加1 decr key :给对应的key的值递减1 incrby key 5 : 给对应的key的值增加加5 decrby key 5 : 给对应的key的值增减减5 incrbyfloat key 1.01 : 给对应的key的值增加浮点数1.01 注意没有递减浮点操作 append key " world" 给key对应value后增加串 world strlen key 返回key对应的string类型值的长度

 

 

 

 

2 数据类型之 hash方式:

 

hash类型的值存储了字段和字段值的映射,字段值只能是字符串,不支持其他数据类型。

hash类型的键至多可以包含       2的32次方-1个字段。
hash类型适合存储对象:如图:

 

 



 

 

 

使用hash数据类型,redis可以为任何键增减字段而不影响其他键
命令
hset/hget/hmset/hmget/hgetall(hsetnx)
hexists,判断键中的属性是否存在
hincrby(hash类型没有hincr命令)
hdel
hkeys/hvals
hlen 

 

 

命令
hset/hget/hmset/hmget/hgetall(hsetnx)
hexists,判断键中的属性是否存在
hincrby(hash类型没有hincr命令)
hdel
hkeys/hvals
hlen


 

// 增加hash类型三个属性
127.0.0.1:6379> hset user:100 name zm
(integer) 1
127.0.0.1:6379> hset user:100 age 30
(integer) 1
127.0.0.1:6379> hset user:100 sex 1
(integer) 1
// 获取一个属性的值
127.0.0.1:6379> hget user:100 sex
"1"
// 同时获取多个属性的值
127.0.0.1:6379> hmget user:100 sex age
1) "1"
2) "30"
// 得到这个健下对应的所有属性和属性值
127.0.0.1:6379> hgetall user:100
1) "name"
2) "zm"
3) "age"
4) "30"
5) "sex"
6) "1"
// 判断属性是否存在
127.0.0.1:6379> hexists user:100 name
(integer) 1
// 得到所有属性
127.0.0.1:6379> hkeys user:100
1) "name"
2) "age"
3) "sex"
得到所有属性对应的数值
127.0.0.1:6379> hvals user:100
1) "zm"
2) "30"
3) "1"
// 删除属性age
127.0.0.1:6379> hdel user:100 age
(integer) 1
//  得到健下所有属性个数
127.0.0.1:6379> hlen user:100
(integer) 2

 

3 数据类型之list:

 

 

list是一个有序的字符串列表,列表内部实现是使用双向列表(linked list)实现的。
list还可以作为队列使用(后面讲)
一个列表类型的键最多能容纳 2的32次方-1      个元素。
命令
lpush/rpush/lpop/rpop
llen/lrange
lrem(lrem key count value)count分为三种情况
lindex/lset/ltrim/linsert
rpoplpush:将元素从一个列表转到另一个列表

lpush 向列表左侧插入数据
rpush 向列表右侧插入数据
lpush list 1
lpush list 2
rpush list 3
rpush list 4

lrange list 0 -1 查看list这个key内的所有数据

lpop 从左侧弹出并移除
rpop 从右侧弹出并移除


llen list 查询元素个数

lpush list 3 4 5 6 7 插入多条 中间用空格隔开

lrem list 2 3 从key为list的集合中 从左侧开始删除,删除2次值为3的数据

lrem list -2 3 从key为list的集合中 从右侧开始删除,删除2次值为3的数据

lrem list 0 3 从key为list的集合中 删除所有值为3的数据

lindex list 0 查询角标为0的数据

lset list 0 x 将集合list的第0个元素设置为x

ltrim list 0 2 将key名称为list的集合切割得到角标为0,1,2的三个元素

linsert list before d a 在元素d前面插入元素a

linsert list after d y  在元素d后面插入元素y

 

4 数据类型之set:

 

 

set集合中的数据都是不重复的,无序的,一个集合类型键可以存储至多 2的32次方-1 个字符串   
 
命令   
sadd/srem/smembers/sismember   
sdiff/sinter/sunion   
sdiffstore/sinterstore/sunionstore   
scard/srandmember/spop  


sadd set1 a

smembers set1  返回集合set1的所有元素

srem set1 a  删除集合set1的a元素

sismember set1 a  查看set1中是否有元素a

sadd set1 a b c
sadd set2 b c d

sdiff set1 set2  求集合之间的差集 以第一个参数集合作为判断标准
sinter set1 set2 求集合之间的交集
sunion set1 set2  求集合之间的并集 

sdiffstore setresult set1 set2 将集合set1 set2的差集结果存储在集合setresult中
sinterstore setresult1 set1 set2 将集合set1 set2的交集结果存储在集合setresult1中
sunionstore   setresult2 set1 set2  将集合set1 set2的并集结果存储在集合setresult2中
 
 
scard set1 返回集合个数
srandmember set1 2 每次随机从集合set1中获取2个元素
spop  set1  随机从set1中取出一个元素并移除

 

 

 

5 数据类型之sorted set:

 

 

有序集合,在集合类型的基础上为集合中的每个元素都关联了一个分数,这样可以很方便的获得分数最高的N个元素(topN)。



有序集合类型和列表类型的差异
相同点
(1)二者都是有序的
(2)二者都可以获得某一范围的元素
不同点
(1)列表类型是通过链表实现的,获取靠近两端的数据速度极快,当列表中元素增多后,访问中间的数据速度会很慢,所以它更加适合很少访问中间元素的应用
(2)有序集合类型是使用散列表和跳跃表(skip list)实现的,所以即使读取位于中间部分的数据速度也很快
(3)列表中不能简单的调整某个元素的位置,但是有序集合可以(通过更改这个元素的分值)
(4)有序集合要比列表类型更耗费内存




给每个元素设置分值,然后根据set元素的分值来排序,从而达到有序的目的。

 
给每个元素设置分值,然后根据set元素的分值来排序,从而达到有序的目的。

命令
zadd/zscore/zrange/zrevrange/zrangebyscore
zincrby/zcard/zcount/zrem/zremrangebyrank 根据集合中元素的排名来删除
zremrangebyscore 根据集合元素中分值范围来删除元素/zrank/zrevrank
zinterstore/zunionstore
扩展:+inf(正无穷)	-inf(负无穷)


zadd zset 20 a 向集合zset中插入元素a 分值为20
zadd zset 10 b 50 c 
zscore zset a 查看元素a的分值
zrange zset 0 1 获取zset中排名前两位的元素
zrange zset 0 -1 正序获取zset中所有的元素
zrange zset 0 -1 withscores 正序获取zset中所有的元素 并显示元素的分值
zrevrange zset 0 -1 倒序获取zset中所有的元素
zrangebyscore zset 10 20 返回包含分值在10和20区间的元素 【10,20】
zrangebyscore zset (10 20 返回包含分值在10和20区间的元素 (10,20】


zincrby zset 20 a  给集合zset的元素a在原基础上增长分值20
zcard zset 获取元素zset的个数
zcount zset 10 40 获取zset中分值在 【10,40】之间的个数
zrem zset a  删除元素a
zremrangebyscore zset 0 2 根据排名删除[0,2]三个数据
zrank zset a 返回a在集合zset中的排名
zrevrank zset a 返回a在集合zset中的倒叙的排名
zinterstore zsetersult 2 set set2 对set set2两个集合交集结果存储在集合zsetersult内 可以继续设置参数 来讲两个集合中共同元素的权值做计算和选择

zunionstore 并集结果存储在集合
 
  • 大小: 17.5 KB
分享到:
评论

相关推荐

    Redis 数据类型String Hash list set使用场景

    String类型使用场景 计数器 例如一篇文章有多少人看过使用 INCR article:readcount:文章id 取值为GET article:readcount:文章id hash类型使用场景 电商的购物车 hset cart:用户id 商品id 商品数量 增加同样商品的...

    Java操作Redis,实现String、List、Map的set和get

    本文将深入探讨如何使用Java来操作Redis,包括设置和获取String、List和Map类型的数据,并且会介绍如何进行封装和单元测试。 首先,要与Redis进行交互,我们需要引入Jedis库,这是Java最常用的Redis客户端。在你的...

    NoSQL数据库之Redis数据库管理三(string类型和hash类型)

    然而,Redis并不仅限于String和Hash,它还支持List、Set和Sorted Set等其他数据类型,每种都有其独特的应用场景。例如,List可以用于实现消息队列,通过LPUSH和RPOP命令添加和取出元素;Set适合存储不重复的元素,如...

    Redis学习资料

    Redis学习手册 Set数据类型 doc Redis学习手册 Sorted Sets数据类型 doc Redis学习手册 String数据类型 doc Redis学习手册 主从复制 doc Redis学习手册 事务 doc Redis学习资料 rar redis讲义 doc">redis 2 8 13 tar...

    Java操作Redis的多种数据类型

    本文将深入探讨如何使用Java操作Redis的四种主要数据类型:字符串(String)、列表(List)、哈希(Hash)和集合(Set)。 首先,我们来看**字符串类型**(String)。在Redis中,字符串是最基础的数据类型,可以...

    redis中string,list,set,zset,hash,hyperloglog等命令详解(一份就够超全超详细)

    内容包含了redis中全部命令string,list,set,zset,hashhyperloglog,geo,stream,pubsub,scripting,server,cluster,connection,generic,transactions. 格式有命令完整语法格式,命令说明,起始版本三部分组成,例如 MGET ...

    redis数据类型指令整理

    通过以上对Redis数据类型及其相关指令的整理,我们可以了解到Redis提供了非常丰富和灵活的数据操作能力,这使得Redis成为了一个在多种应用场景下都非常实用的工具。无论是在数据存储、缓存加速还是消息队列等场景,...

    Redis数据类型归纳1

    本文主要探讨Redis中的数据类型,包括String、List、Set和Sorted Set,并结合实际应用讲解它们的特点和使用方法。 1. String String是最基本的数据类型,可以存储任何类型的数据,如数字、字符串等。在Redis中,...

    Redis实战_Redis实战中文完整版_Redis快速入门_Redis数据类型及操作_Redis常用

    3. **Redis命令操作**:书中会详细介绍每种数据类型的命令,如`SET`、`GET`、`HSET`、`LPOP`、`SADD`、`ZADD`等,以及事务(Transaction)、管道(Pipeline)等高级操作。 4. **Redis持久化**:为了防止数据丢失,...

    Redis数据类型.docx

    Redis 是一个高性能的键值存储系统,它支持多种数据类型,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)以及有序集合(Sorted Set)。这些数据类型的特性使得Redis成为处理各种数据结构的理想选择...

    8-Redis常用命令-list-set-zset.docx

    Redis 是一个开源的、基于内存的数据结构存储系统,支持五种数据类型:string(字符串)、hash(哈希)、list(列表)、set(集合)及 zset(有序集合)。本文将详细介绍 Redis 的 List 类型的命令和应用场景。 ...

    redis 数据类型详解 以及 redis适用场景场合

    - **丰富的数据结构**:除了基本的键值对存储外,Redis还支持多种复杂的数据结构,如List、Set、Sorted Set等,使得开发者能够更加灵活地组织和操作数据。 - **更高的内存使用效率**:当采用特定的数据结构时,Redis...

    redis五种数据类型的使用场景

    它主要支持五种数据类型:String、Hash、List、Set、Sorted Set,每种数据类型有其独特的使用场景和适用性。 ### String(字符串类型) String是Redis中最基本的数据类型,可以包含任何数据,比如JPEG图片或者序列...

    c#操作Redis的5种基本类型汇总

    * 简介:String是Redis最基本的类型,可以理解成与Memcached一样的类型,一个key对应一个value。String类型是二进制安全的,意思是Redis的String可以包含任何数据。 * 应用场景:存储简单的键值对,比如统计某个网站...

    02_redis 数据类型.pdf

    首先,Redis数据类型可以分为五种常用类型:string、hash、list、set、sorted_set。Redis自身是一个基于内存的存储系统,其中所有的数据都是采用key:value的形式存储的。key总是字符串类型,而value则根据数据类型的...

    Redis数据类型

    本文将深入探讨Redis中的五大数据类型及其应用场景。 1. 字符串(String) 字符串是最基本的数据类型,用于存储单个值。它可以是数字、字母或任何Unicode字符。在Redis中,字符串可以作为键值对中的值,常用来存储...

    Redis数据类型-03.docx

    其五大数据类型是Redis的核心,它们分别是字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。 1. **字符串(String)**: - String是最基础的数据类型,每个key对应一个value,value可以是...

    Redis各个数据类型的使用场景.pdf

    Redis 是一个高性能的键值数据库,它支持五种主要的数据类型:String、Hash、List、Set 和 Sorted Set,每种类型都有其特定的使用场景。 1. String:这是最基本的键值对数据类型,其中值可以是字符串或数字。String...

    C#操作Redis明细内容 C#调用redis c#使用redis业务 C# Redis操作类 C#中Redis封装的类 C#

    3)支持多种数据类型,常见的如 string、list、hash、set、zset、bitmaps、hyperloglog、geo 4)应用场景广泛:常作为缓存使用,分布式锁、数据共享等 Redis 支持的数据类型有哪些?1)String(字符类型) 2)Hash...

Global site tag (gtag.js) - Google Analytics