DMOZ中文网站分类目录-免费收录各类优秀网站的中文网站目录.
  • DmozDir.org
DMOZ目录快速登录入口-免费收录各类优秀网站的中文网站目录.由人工编辑,并提供网站分类目录检索及地区分类目录检索,是站长免费推广网站的有力平台!

Java后端

  • Java后端

  • 已被浏览: 58 次2020年12月20日    来源:  https://blog.csdn.net/wutianxu123/article/details/110441780
  • 一、Redis简介 redis是Nosql数据库中使用较为广泛的非关系型内存数据库 redis内部是一个key-value存储系统。它支持存储的value类型相对更多 包括string(字符串)、list(链表)、set(集合)、zs

    一、Redis简介

    redis是Nosql数据库中使用较为广泛的非关系型内存数据库,redis内部是一个key-value存储系统。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(有序集合)和hash(哈希类型,类似于Java中的map)。Redis基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构存储服务务器。

    二、Redis的特性

    多种数据类型存储:

    1、字符串类型
    2、散列类型
    3、列表类型
    4、集合类型
    5、有序集合类型

    内存存储与持久化:

    1、内存的读写速度远快于硬盘
    2、自身提供了持久化功能(RDB、AOF两种方式)

    功能丰富:

    1、可用作缓存、队列、消息订阅/发布
    2、支持键的生存时间
    3、按照一定规则删除相应的键

    简单稳定:

    1、相比SQL而言更加简单
    2、不同语言的客户端丰富
    3、基于C语言开发,代码量少

    Redis特性:

    1、性能极高:Redis能读的速度是110000次/s,写的速度是81000次/s。
    2、丰富的数据类型:Redis支持二进制案例的Strings、Lists、Hashes、Sets及OrderedSets数据类型操作。
    3、原子:Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
    4、其它特性:Redis还支持publish/subscribe、通知、key过期等特性。

    三、下载安装(MacOS)

    1、下载地址:https://redis.io/download/

    2、解压安装

    # 解压安装包
    tar xzf redis-6.0.8.tar.gz
    
    # 进入解压后的目录
    cd redis-6.0.8
    
    # 编译
    make
    
    # 编译成功后,进入到src目录下
    cd src
    
    # 使用默认配置启动redis服务
    ./redis-server
    
    # 启动redis客户端,用于与redis-server进行交互
    ./redis-cli
    

    3、测试连接性与状态回复

    4、Redis的多数据库

    Redis默认支持16个数据库,可以通过修改配置文件来更改支持数据库的数量,对外都是以一个从0开始的递增数字命名,可以通过参数databases来修改默认数据库个数。客户端连接Redis服务后会自动选择0号数据库,可以通过select命令更换数据库,例如选择1号数据库:

    # 选择1号数据库命令
    127.0.0.1:6379>select 1
    

    说明:

    1、Redis不支持自定义数据库名称。
    2、Redis不支持为每个数据库设置访问密码。
    3、Redis的多个数据库之间是完全隔离的。

    四、Redis的基本命令

    以下命令均在redis-cli客户端执行

    # 清空所有数据库的数据
    flushall
    
    # 清空当前所在数据库的数据
    flushdb
    
    # 查询所有键。查询某个具体的键,将后面的*改为键名即可
    keys *
    
    # 判断一个键是否存在,存在返回1,否则返回0。其中key是键名
    exists key
    
    # 删除一个键,返回删除键的个数。其中key是键名
    del key
    
    # 查看键的数据类型。其中key是键名
    # string(字符串)、hash(散列类型)、list(列表类型)、set(集合类型)、zset(有序集合类型)
    type key
    
    # 帮助
    help
    

    五、Redis的字符串数据类型

    字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据。可以存储json化的对象、字节数组等。一个字符串类型键允许存储的数据最大容量是512MB。

    赋值与取值:

    127.0.0.1:6379> set test 123
    OK
    127.0.0.1:6379> get test
    "123"
    

    递增数字:

    127.0.0.1:6379> incr num
    (integer) 1
    127.0.0.1:6379> incr num
    (integer) 2
    127.0.0.1:6379> incr num
    (integer) 3
    

    增加定制的整数:

    127.0.0.1:6379> incrby num 3
    (integer) 6
    127.0.0.1:6379> incrby num 3
    (integer) 9
    127.0.0.1:6379> incrby num 3
    (integer) 12
    

    减少整数:

    127.0.0.1:6379> decr num
    (integer) 11
    127.0.0.1:6379> decr num
    (integer) 10
    127.0.0.1:6379> decr num
    (integer) 9
    

    减少指定的整数:

    127.0.0.1:6379> decrby num 2
    (integer) 7
    127.0.0.1:6379> decrby num 2
    (integer) 5
    127.0.0.1:6379> decrby num 2
    (integer) 3
    

    尾部追加值:

    127.0.0.1:6379> set str hello
    OK
    127.0.0.1:6379> append str "hanmeimei"
    (integer) 14
    127.0.0.1:6379> get str
    "hellohanmeimei"
    

    获取字符串长度:

    127.0.0.1:6379> strlen str
    (integer) 14
    

    同时设置多个值:

    127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
    OK
    127.0.0.1:6379> get k1
    "v1"
    

    同时获取多个值:

    127.0.0.1:6379> mget k1 k3
    1) "v1"
    2) "v3"
    

    六、列表类型

    Redis列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。一个列表最多可以包含 4294967295,每个列表超过40亿个元素。

    自动返回并删除列表的第一个(LPOP)或最后一个(RPOP)元素。例如,如果列表包含元素“a”、“b”、“c”,LPOP将返回“a”,而列表将变成“b”、“c”。如果键不存在或列表已为空,则返回特殊值“nil”

    # 删除列表的第一个元素
    LPOP key
    
    # 删除列表的最后一个元素
    RPOP key
    

    返回存储在指定键处的列表的指定元素。0是第一个元素,1是第二个元素,依此类推。支持负索引,例如-1是最后一个元素,-2是倒数第二个元素,依此类推。

    如果键处存储的值不是列表类型,则返回错误。如果索引超出范围,则返回空字符串。请注意,即使平均时间复杂度是O(n),请求列表的第一个或最后一个元素也是O(1)。

    LINDEX key index
    

    在列表的元素前或者后插入元素

    LINSERT key before pivot value
    LINSERT key after pivot value
    

    返回存储在指定键的列表的长度。如果键不存在,则返回零(与空列表的行为相同)。如果键处存储的值不是列表,则返回错误

    LLEN key
    

    将一个值插入到列表头部

    LPUSH key value1
    

    将一个值插入到已存在的列表头部

    LPUSHX key value
    

    获取列表指定范围内的元素

    LRANGE key start stop
    

    移除列表元素

    LREM key count value
    

    通过索引设置列表元素的值

    LSET key index value
    

    对一个列表进行修剪(trim),即让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除

    LTRIM key start stop
    

    移除列表的最后一个元素,并将该元素添加到另一个列表并返回

    RPOPLPUSH source destination
    

    在列表中添加一个或多个值

    RPUSH key value1
    

    为已存在的列表添加值

    RPUSHX key value
    

    七、Redis集合

    Redis的set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis中集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1)。集合中最大的成员数为4294967295,每个集合可存储40多亿个成员。

    向集合添加一个成员:

    sadd key member1
    

    获取集合的成员数

    scard key
    

    返回给定所有集合的差集

    sdiff key1
    

    返回给定所有集合的差集并存储在destination中

    sdiffstore destination key1
    

    返回给定所有集合的交集

    sinter key1
    

    返回给定所有集合的交集并存储在destination中

    sinterstore destination key1
    

    判断member元素是否是集合key的成员

    sismember key member
    

    返回集合中的所有成员

    smembers key
    

    将member元素从source集合移动到destination集合

    smove source destination member
    

    移除并返回集合中的一个随机元素

    spop key
    

    返回集合中一个随机数

    srandmember key [count]
    

    移除集合中一个或多个成员

    srem key member1
    

    返回所有给定集合的并集

    sunion key1
    

    所有给定集合的并集存储在 destination 集合中

    sunionstore destination key1
    

    八、Hash数据结构

    Redishash是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis中每个hash可以存储4294967295个键值对。

    取值与赋值:
    执行插入操作时返回1,执行更新操作时返回0

    127.0.0.1:6379> hset user username suiyi
    (integer) 1
    127.0.0.1:6379> hget user username
    "suiyi"
    

    判断字段是否存在:

    127.0.0.1:6379> hexists user username
    (integer) 1
    127.0.0.1:6379> hexists user age
    (integer) 0
    

    Hash的自增长:

    127.0.0.1:6379> hincrby user age 2
    (integer) 22
    127.0.0.1:6379> hincrby user age 2
    (integer) 24
    127.0.0.1:6379> hincrby user age 2
    (integer) 26
    

    删除字段,返回值是被删除的字段个数:

    127.0.0.1:6379> hdel user age
    (integer) 1
    127.0.0.1:6379> hdel user age name
    (integer) 0
    127.0.0.1:6379> hdel user age username
    (integer) 1
    

    只获取字段名或字段值:

    127.0.0.1:6379> hmset user age 20 name suiyi
    OK
    127.0.0.1:6379> hkeys user
    1) "age"
    2) "name"
    127.0.0.1:6379> hvals user
    1) "20"
    2) "suiyi"
    

    获取字段数量:

    127.0.0.1:6379> hlen user
    (integer) 2
    

    九、Redis职务

    9.1、Redis事务

    Redis事务可以一次执行多个命令,并且带有以下两个重要的保证:

    1、事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
    2、事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。

    一个事务从开始到执行会经历以下三个阶段:

    1、开始事务。
    2、命令入队。
    3、执行事务。

    9.2、Redis事务命令

    下表列出了redis事务的相关命令:

    取消事务,放弃执行事务块内的所有命令:

    discard
    

    执行所有事务块内的命令:

    exec
    

    标记一个事务块的开始:

    multi
    

    取消WATCH命令对所有key的监视:

    unwatch
    

    监视一个key ,如果在事务执行之前这个key被其他命令所改动,那么事务将被打断:

    watch key
    
    随 亦 CSDN认证博客专家 安全博客专家 想了解博主更多信息请戳:关于博主/关于博客/博客大事记
    以上信息来源于网络,如有侵权,请联系站长删除。

    TAG:后端 java

  • 上一篇:适合凌晨两点练习的小测验
  • 与“Java后端”相关的资讯
  • 【java框架】SpringBoot(7) -- SpringBoot整合MyBatis
  • Java GUI入门手册-AWT篇
  • Java并发工具篇
  • Java筑基
  • Java中的线程池用过吧?来说说你是怎么理解线程池吧?