Redis非关系型数据库

Redis介绍

1.引言

1.由于用户量过大,请求量也随之增大,数据压力过大
2.多台服务器之间,数据不同步
3.多台服务器之间的锁,已经不存在互斥性了

在这里插入图片描述

2.NoSQL

Redis是可以一款NoSQL
NoSQL->非关系型数据库->not only SQL

  • 1.key-value:redis
  • 2.文档型:ElasticSearch,Solr,MongoDB
  • 3.面向列:Hbase,Cassandra
  • 4.图形化:Neo4j

除了关系型数据库都是非关系型数据库
NoSQL只是一种概念,泛指非关系型数据库和关系型数据库做一个区分

3.Redis介绍

一位意大利人,在开发一款LLOOGG的统计页面,因为MySQL性能不好,自己研发了一款非关系型数据库,命名为Redis
Redis(Remote Dictionary Server)即远程字典服务,Redis是由c语言编写的,Redis是一款key-value的NoSQL,而且Redis基于内存存储数据的,Redis还提供了多种持久化机制,性能可以达到110000/s读取数据以及81000/1s写入数据,Redis还提供了主从,哨兵以及集群的搭建方式,可以更方便的横向扩展以及垂直扩展

Redis安装

1.安装Redis

version: '3.1'
  services:
    redis:
      image: daocloud.io/library/redis:5.0.7
      restart: always
      container_name: redis
      environment:
        - TZ=Asia/Shanghai
      ports:
        - 6379:6379

2.使用redis-cli连接redis

进入redis容器内部
docker exec -it 容器id bash
在容器内部,使用redis-cli连接
在这里插入图片描述

3.使用图形化界面连接redis

Redis常用命令

1.Redis存储数据结构

常用5中数据结构

  • key-string:一个key对应一个值 (最常用,一般用于存储一个值)
  • key-hash:一个key对应一个map(储存一个对象数据)
  • key-list:一个key对应一个列表(使用list结构实现栈和队列结构)
  • key-set:一个key对应一个集合(交集,差集和并集的操作)
  • key-zset:一个key对应一个有序的集合(排行榜)
    另外三种数据结构
    HyperLogLog:计算近似值
    GEO:地理位置
    BIT:一般存储的也是一个字符串,存储的是一个byte[]

在这里插入图片描述

2.string的常用命令

# 1.添加值
set key value
# 2.取值
get key
# 3.批量操作
mset key vlue [key,value...]
mget key [key...]
# 4.自增命令(自增1)
incr key
# 5.自减命令(自减1)
decr key
# 6.自增自减指定数量
incrby key increment
decrby key increment
# 7.设置值得同时,指定生存时间(每次向redis添加数据时,尽量都设置上生存时间)
setex key second value
# 8.设置值,如果这个值不存在的话(如果这个key存在的话,什么事都不做,如果这个key不存在,和set命令一样)
setnx key value
# 9.在key对应的value后,追加内容
append key value
# 10.查看value字符串的长度
strlen key

3.hash常用命令

# 1.存储数据
hset key field value
# 2.获取数据
hget key field
# 3.批量操作
hmset key field value[field value...]
hmget key field [filed...]
# 4.自增
hincrby key field increment
# 5.设置值(如果key-field不存在,那么就正常添加,如果存在就不做任何事情)
hsetnx key field value
# 6.检查field是否存在
hexists key field
# 7.删除key对应的某一个field
hdel key field
# 8.获取当前hash结构中的全部field和value
hgetall key
# 9.获取当前hash结构中的全部field
hkeys key
# 10.获取当前hash结构的全部value
hvals key
# 11.获取当前hash结构的field的数量
hlen key

4.list常用命令

# 1.存储数据(从左侧插入数据,从右侧插入数据)
lpush key value [value...]
rpush key value [value...]
# 2.存储数据(如果key不存在,什么事都不做,如果key存在,但是不是list结构,什么都不做)
lpushx key value
rpushx key value
# 3.修改数据(在存储数据时,指定好的你的索引位置)
lset key index value
# 4.弹栈方式获取数据(左侧弹出数据,右侧弹出数据)
lpop key
rpop key
# 5.获取指定索引范围的数据(star从0开始,stop输入-1,代表最后一个,倒数第二个为-2)
lrange key start stop
# 6.获取指定索引位置的数据
lindex key index
# 7.获取整个列表的长度
llen key
# 8.删除列表中的数据(删除当前列表中count个value的值,count>0从左侧往右侧删除,反之亦然,count==0删除全部)
lrem key count value
# 9.保留列表中的数据(范围外的删除)
ltrim key start stop
# 10.将一个列表中最后一个数据,插入到另外一个列表的头部位置
rpoplpush list1 list2

5.set常用命令

# 1.存储数据
sadd key member [menmber...]
# 2.获取数据(获取全部数据)
smember key
# 3.随机获取一个数据(获取的同时移除数据,count默认为1)
spop key [count]
# 4.交集(取多个set集合交集)
sinter set1 set2...
# 5.并集(获取全部集合中的数据)
sunion set1 set2...
# 6.差集(获取多个集合中不一样的数据)
sdiff set1 set2...
# 7.删除数据
srem key number [menmber...]
# 8.查看当前的set集合中是否包含这个值
sismember key member

zset的常用命令

# 1.添加数据(score必须是数值,menber不允许重复的)
zadd key score menber [score member]
# 2.修改member的分数(如果member是存放在key中的,正常增加分数,如果member不存在,这个命令就相当于zadd)
zincrby key increment menber
# 3.查看指定的member的分数
zscore key member
# 4.获取zset中数据的数量
zcard key
# 5.根据score的范围查询menber数量
zcount key min max
# 6.删除zset中的成员
zrem key member [member...]

在这里插入图片描述

7.key的命令

# 1.查看Redis中的全部key(pattern:*,xxx*,*xxx)
key pattern
# 2.查看走一个key是否存在(1——key存在,0——key不存在)
exists key
#3.删除key
del key [key...]

在这里插入图片描述
在这里插入图片描述

库的常用命令

# 1.清空当前的数据库
flushdb
# 2.清空全部数据库
flushall
# 3.查看当前数据库中有多少个key
dbsize
# 4.查看最后一次操作时间
lastsave
# 5.实时监控Redis服务接收到的目录
monitor

Java连接Redis

Jedis连接Redis,Lettuce连接Redis

1.Jedis连接Redis

1.创建maven项目

2.导入需要的依赖

   <dependencies>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值