知识点

相关文章

更多

最近更新

更多

快速掌握 redis 数据类型

2019-03-14 23:56|来源: 网路

Redis支持以下五种数据类型

String(字符串)

Hash(哈希表)

List(列表)

Set(集合)

zset(sorted set:有序集合)。


下面分别对以上5种数据类型进行介绍

1、字符串(String)

String 主要是用于一些比较简单的key/value存储,value是字符串类型,是redis中最常用的redis数据类型。 一个键最大能存储512MB

redis的string类型是二进制安全的,可以包含任何数据,比如jpg图片或者序列化的对象 。

string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。

string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。

string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

常用命令:

  • SET

  • SETNX

  • SETEX

  • SETRANGE

  • MSET

  • MSETNX

  • APPEND

  • GET

  • MGET

  • GETRANGE

  • GETSET

  • STRLEN

  • DECR

  • DECRBY

  • INCR

  • INCRBY

  • SETBIT

  • GETBIT

实例:

   redis 127.0.0.1:6379> SET name "656463.com"

    OK

 redis 127.0.0.1:6379> GET name

  "656463.com"


2、哈希表(Hash)

Redis Hash 数据类型,其所存储的值是key/value的键值对,特别适合存储对象,例如存储用户信息,用户ID为redis中的key,各成员变量为存储值的内部key,成员变量的值为存储值的内部value

每个 hash 可以存储 2 32 -1 键值对(40多亿)。

常用命令:

  • HSET

  • HSETNX

  • HMSET

  • HGET

  • HMGET

  • HGETALL

  • HDEL

  • HLEN

  • HEXISTS

  • HINCRBY

  • HKEYS

  • HVALS

实例:

redis 127.0.0.1:6379> HMSET user:1 username 656463.com 656463 www.656463.com
OK
redis 127.0.0.1:6379> HGETALL user:1
1) "username"
2) "656463.com"
3) "656463"
4) "www.656463.com"
redis 127.0.0.1:6379>


3、链表(List)

Redis List 存储的值是有序的,可以在列表的头部或尾部插入数据。例如粉丝关注列表等。列表最多可存储 232 - 1元素 (4294967295, 每个列表可存储40多亿)。

常用命令:

  • LPUSH

  • LPUSHX

  • RPUSH

  • RPUSHX

  • LPOP

  • RPOP

  • BLPOP

  • BRPOP

  • LLEN

  • LRANGE

  • LREM

  • LSET

  • LTRIM

  • LINDEX

  • LINSERT

  • RPOPLPUSH

  • BRPOPLPUSH

实例:

 redis 127.0.0.1:6379> lpush test redis
    (integer) 1
    redis 127.0.0.1:6379> lpush test mongodb
    (integer) 2
    redis 127.0.0.1:6379> lpush test rabitmq
    (integer) 3
    redis 127.0.0.1:6379> lrange test 0 10
    1) "rabitmq"
    2) "mongodb"
    3) "redis"
    redis 127.0.0.1:6379>



4、集合(Set)

Redis中的Set数据结构主要特别是无序与去重  。也就是集合中不能用相同的元素,集合中的数据是无序的。  集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。

常用数据

  • SADD

  • SREM

  • SMEMBERS

  • SISMEMBER

  • SCARD

  • SMOVE

  • SPOP

  • SRANDMEMBER

  • SINTER

  • SINTERSTORE

  • SUNION

  • SUNIONSTORE

  • SDIFF

  • SDIFFSTORE

实例:

        redis 127.0.0.1:6379> sadd test redis

    (integer) 1

    redis 127.0.0.1:6379> sadd test mongodb

    (integer) 1

    redis 127.0.0.1:6379> sadd test rabitmq

    (integer) 1

    redis 127.0.0.1:6379> sadd test rabitmq

    (integer) 0

    redis 127.0.0.1:6379> smembers test

    1) "rabitmq"

    2) "mongodb"

    3) "redis"


5、有序集(zset, Sorted Set)

Redis sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。当你需要一个有序的并且不重复的集合列表,那么 可以选择sorted set数据结构,比如twitter 的public timeline可以以发表时间作为score来存储,这样获取时就是自动按时间排好序的。

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

常用命令:

  • ZADD

  • ZREM

  • ZCARD

  • ZCOUNT

  • ZSCORE

  • ZINCRBY

  • ZRANGE

  • ZREVRANGE

  • ZRANGEBYSCORE

  • ZREVRANGEBYSCORE

  • ZRANK

  • ZREVRANK

  • ZREMRANGEBYRANK

  • ZREMRANGEBYSCORE

  • ZINTERSTORE

  • ZUNIONSTORE

实例:

        redis 127.0.0.1:6379> zadd test 0 redis

    (integer) 1

    redis 127.0.0.1:6379> zadd test 0 mongodb

    (integer) 1

    redis 127.0.0.1:6379> zadd test 0 rabitmq

    (integer) 1

    redis 127.0.0.1:6379> zadd test 0 rabitmq

    (integer) 0

    redis 127.0.0.1:6379> ZRANGEBYSCORE test 0 1000

    1) "redis"

    2) "mongodb"

    3) "rabitmq"

 

redis知识点

redis快速入门

reids常用命令

redis数据结构

java_API_客户端

Jedis

Tlcache

redis_持久化

AOF

RDB

发布订阅(pub/sub)

redis_事件

redis事务

redis通讯协议

RESP(Redis Serialization Protocol)

redis高可用

redis哨兵

监控(Monitoring) 提醒(Notification) 自动故障迁移(Automatic failover)

redis主从复制

  • 复制模式

    1. 主从复制
    2. 从从复制
  • 复制过程

    • slave向master发送sync命令;
    • master开启子进程执行bgsave写入rdb文件;
    • master发送缓存和RDB文件给slave;
    • master发送数据发送给slave完成复制;

redis集群(Redis_Cluster)

相关问答

更多
  • redis怎么使用[2024-01-20]

    应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql。 同时要注意避免冲突,在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键。 这样处理,主要是实时读写redis,而mysql数据则通过队列异步处理,缓解mysql压力,不过这种方法应用场景主要基于高并发,而且redis的高可用集群架构相对更复杂,一般不是很推荐。
  • Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
  • string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。 string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
  • 只提供想法:前提:所要对比的数据是相同的,或者不可重复字段是相同的 ,因为list数据比较小,那么让list里面的数据插入redis 数据源里面,循环单条插入,中间需要绕过并处理好报错的,然后你就知道那些事重复的了
  • 只提供想法:前提:所要对比的数据是相同的,或者不可重复字段是相同的 ,因为list数据比较小,那么让list里面的数据插入redis 数据源里面,循环单条插入,中间需要绕过并处理好报错的,然后你就知道那些事重复的了
  • 只提供想法:前提:所要对比的数据是相同的,或者不可重复字段是相同的 ,因为list数据比较小,那么让list里面的数据插入redis 数据源里面,循环单条插入,中间需要绕过并处理好报错的,然后你就知道那些事重复的了
  • 最近学习下redis,作为一个高性能的k/v数据库,如果数据不用swap的话,redis的性能是无以伦比的。最近在做一个系统附件的缓存,试着把附件放到redis试试,写了个保存文件的方法。public class TestRedis{ Jedis redis = new Jedis("localhost"); //序列化方法 public byte[] object2Bytes(Object value) { if (value == null) return null; ByteArrayOutputSt ...
  • redis怎么使用[2022-05-23]

    应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql。 同时要注意避免冲突,在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键。 这样处理,主要是实时读写redis,而mysql数据则通过队列异步处理,缓解mysql压力,不过这种方法应用场景主要基于高并发,而且redis的高可用集群架构相对更复杂,一般不是很推荐。
  • 只提供想法:前提:所要对比的数据是相同的,或者不可重复字段是相同的 ,因为list数据比较小,那么让list里面的数据插入redis 数据源里面,循环单条插入,中间需要绕过并处理好报错的,然后你就知道那些事重复的了
  • 看来Laravel并没有像你提到的那样做到这一点的方法。 但是,您似乎应该能够像使用任何其他方法一样使用run方法执行redis auth命令。 您可以在创建连接后执行此操作。 Redis在连接时不进行身份验证,它实现了一个处理身份验证的命令,如http://redis.io/commands/auth所述 至于在配置文件中存储密码,也可能是在配置中添加变量并像引用任何其他配置变量一样引用它。 It doesn't appear Laravel has a method for doing this in ...