zoukankan      html  css  js  c++  java
  • Redis数据类型

    Redis五种数据类型分别是String、hash(哈希)、list(列表)、set(集合)、sort set(有序集合)。

    字符串String

    字符串类型是Redis中最基本的数据存储类型,是一个由字节组成的序列,是二进制安全的,接受任何格式数据。JPEG图形、JSON、字符串、整数和浮点,标准的key-value,可容纳512MB数据。

    哈希hash

    是一个键值(key=>value)对集合。hash结构可以像数据库中update一个属性一样只修改某一项属性值。适合用于存储对象。

    列表list

    由多个字符串组成的有序可重复的序列,是链表结构。按照插入顺序排序。可以添加一个元素到列表的头部或尾部。最多存储2^32-1(40多亿)。

    集合set

    String类型无序不重复组合。通过哈希表实现的。最多存储2^32-1(40多亿)。

    有序集合zset

    String类型有序不重复集合。每个元素都会关联一个double类型的分数。redis通过分数为集合成员进行从小到大排序。

    Redis是一个字典结构的存储服务器,实际上一个Redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存储在哪个字典中。与在关系数据库实例中可以创建多个数据库类似,可以将每个字典都理解成一个独立的数据库。
    每个数据库对外都是一个从0开始的递增数字命名,Redis默认支持16个数据库(可以通过配置文件支持更多,无上限),可以通过配置databases来修改这一数字。客户端与Redis建立连接后会自动选择0号数据库。
    Redis不支持自定义数据库的名字,每个数据库都以编号命名。也不支持为每个数据库设置不同的访问密码,所以一个客户端要么可以访问全部数据库,要么连一个数据库也没有权限访问。多个数据库之间并不是完全隔离的,比如FLUSHALL命令可以清空一个Redis实例中所有数据库中的数据。

    Redis的key和value是区分大小写的,命令不区分大小写,redis是单线程,不适合存储大容量的数据。

    命令:

    String

    命令行:

    set a test 新增key是a,value是test

    get a 查询key是a的数据

    incr key 对应的value自增1,如果没有key值,自动创建并复制1,自增value是可以转成数字的。

    decr key 对应的value自减1

    Java:

    jedis.set("username","zhangsan");

    jedis.mset("address","bj","sex","1"); 批量添加

    String username=jedis.get("username");

    List<String> list=jedis.mget("username","sex");

    jedis.del("username");

    jedis.set("user:01","zhangsan");

    jedis.set("user:02","lisi");

    jedis.get("user:01");

    Hash

    命令行:

    hset key filed value 设置值

    hget key filed 获取值

    Java:

    jedis.hset("userInfo", "name", "zhangsan");

    Map<String,String> map=new HashMap<>();

    map.put("age","20");

    map.put("sex","1");

    jedis.hmset("userInfo",map);

    String name=jedis.hget("userInfo","name");

    List<String> list=jedis.hmget("userInfo","age","sex");

    jedis.hdel("userInfo","name");

    List

    命令行:

    lpush list 1 2 3 4 从左添加元素

    rpush list 1 2 3 4 从右添加元素

    lrange list 0 -1 从0到-1元素查看:也表示查看所有

    Java:

    jedis.lpush("studends","zhangsan","wangwu");

    jedis.rpush("studends","wangerxiao");

    List<String>students=jedis.lrange("studends",0,2);

    Long total=jedis.llen("studends");

    jedis.lrem("studends",1,"zhangsan"); 删除列表第一次出现zhangsan

    jedis.del("studends");

    Set

    命令行:

    sadd set1 a b c d d 向set1中添加元素

    smembers set1 查询元素

    srem set1 a 删除元素

    Java:

    jedis.sadd("letters","aaa","bbb","ccc","ddd");

    Set<String> letters=jedis.smembers("letters");

    jedis.srem("letters","aaa","bbb");

    Zset

    命令行:

    zadd zset1 9 a 8 c 10 d 1 e 添加元素,数字是顺序

    zrange zset1 0 -1 从小到大查询所有元素

    zrevrange zset1 0 -1 从大到小查询所有元素

    Java:

    Map<String,Double> members=new HashMap<>();

    members.put("zhangsan",99D);

    members.put("lisi","96D");

    members.put("wangwu", 92D);

    jedis.zadd("ai",members):

    Set<String> ai=jedis.zrange("ai",0,4);

    Long total=jedis.zcard("ai");

    jedis.zrem("ai","zhangsan","lisi");

    Key

    命令行:

    expire key second 设置key的过期时间

    ttl key 查看剩余时间

    persist key 清除过期时间,也是持久化,持久化成功提示1 不成功0

    del key 删除key

    select 0 选择0号数据库,默认是0号数据库

    Java:

    jedis.dbSize();

    jedis.keys("*");

  • 相关阅读:
    004.Docker镜像管理
    001.Heartbeat简介
    005.Docker存储管理
    006.Docker网络管理
    012.Docker仓库管理
    013.Docker私有仓库多Harbor同步部署
    007.基于Docker的Etcd分布式部署
    008.Docker Flannel+Etcd分布式网络部署
    009.Docker Compose部署及基础使用
    002.Open-Falcon Server部署及Agent监控
  • 原文地址:https://www.cnblogs.com/DreamFather/p/15305374.html
Copyright © 2011-2022 走看看