Redis介绍基本使用,数据类型

一、NoSQL和Redis简介

1、NoSQL-Not Only SQL

NoSQL 指的是非关系型数据库,是对不同于传统的关系型数据库的数据库管理系统的统称,NoSQL是web2.0时代海量数据催生的产物

特点
  1. 不支持SQL语法

    NoSQL的世界中没有一种通用的语法,每种NoSQL数据库都有自己的语法,以及擅长的业务场景

  2. 读写性能高

    NoSQL 数据库存在于内存当中,都具有非常高的读写性能,尤其在海量数据下,它的表现非常优秀

  3. 灵活的数据模型

    NoSQL的存储方式十分灵活,存储方式可以是JSON文档,键值对(Key Value)或者其他方式

2、Redis

2008年,意大利的一家创业公司Merzia推出了一款基于MySQL的网站实时统计系统LLOOGG,然而没过多久该公司的创始人SalvatoreSanfilippo便开始对MySQL的性能感到失望,于是他决定亲自为LLOOGG量身定做一个数据库,并于2009年开发完成,这个数据库就是Redis。同一年SalvatoreSanfilippo将Redis开源发布,并开始和Redis的另一名主要的代码贡献者PieterNoordhuis一起继续着Redis的开发,直到今天。

Redis 全称: Remote Dictionary Server(远程字典服务器)的缩写,以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容。 使用C语言编写,并以内存作为数据存储介质,所以读写数据的效率极高

特点
  1. Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  2. Redis不仅仅支持简单的key-value类型的数据,同时还把value分为list,set,zset,hash等数据结构存储
  3. 因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,提高效率

二、Redis基本使用

1、启动和关闭

1、进入redis
本地连接:redis-cli
远程连接:redis-cli -h 127.0.0.1 -p 6379
退出:exit
有16个数据库:0、1、2、3……
一开始默认进入0号数据库
指定进入某数据库:select
slect 7 # 进入7号数据库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ofA2jhge-1660405945325)(C:\Users\土大夫\AppData\Roaming\Typora\typora-user-images\1646395572935.png)]

2、基础命令

1、添加键值对  set + 键名 + 键值
set  bar 1
mset bar1 aaa bar2 bbb    # 反向输出,即bar2 bar1

2、查看键值类型   type
type bar

3、查看键名		keys
keys  *
keys  bar[0-9]
keys  bar?

4、查看键值	  get + 键名
mget  bar  bar1

5、删除键值对   del + 键名
del  bar

6、修改键名	rename + 键名 + 新键名
rename  bar bar1

7、判断键是否存在 exists
exists + 键名

8、时间
(1)设置key过期时间(单位:s):expire + 键名	
(2)查看key剩余时间 ttl + 键名
   -1:永久	-2:不存在
(3)变成永久(之前不加过期时间就是永久的):persist + 键名
(4)直接设置key就顺便设置时间
   set + 键名 + 键值 + ex + 时间
  /setex + 键名 + 键值 + 时间
 
9、清空redis数据库 flushall  (!慎用!) 

三、数据类型

1、字符串类型 string

# 如果键值value是数字
incr + 键名    # 加1
decr + 键名    # 减1

# 加减整数
incrby + 键名 + 整数
decrby + 键名 + 整数

2、列表 list

1、左添加 (栈:先进后出) lpush myli 3 4 5
2、右添加 (队列:先进先出) rpush myli 2 3 4
3、获取长度:llen
4、查看指定位置元素:lindex myli 3
5、查看列表元素:
   全部: lrange myli 0 -1
   第一个元素:lrange myli 0
6、删除:
左删除:lpop	右删除:rpop
删除多个:lrem myli count value
lrem myli 2 1   # count > 0 从左删除前2个键值为1的元素
lrem myli -1 2  # count < 0 从右删除前1个键值为2的元素
lrem myli 0 4   # count = 0 删除所有为4的元素

3、哈希 hash

1、设置:
hset bd age 18					 # 一个键值对
hmset bd name xiaoming sex nan    # 设置多个键值对
2、查看:        
hget bd age
hmget bd name sex age
3、获取
获取键:hkeys bd
获取值:hvals bd
获取键值对:hgetall bd
获取键个数:hlen bd
4、判断字段是否存在
hexists bd size   # 存在返回1,不存在返回0
hsetnx bd size 180  # 无则增
5、添加数值
hincrby bd age 1  # 添加数值 age = age + 1
6、删除字段 
hdel bd size
删除全部:del bd   

4、集合 set

1、添加元素
sadd se1 1 2 3 4 5 6
sadd se2 2 4 6 8 
2、查看所有元素	smembers se1
3、删除指定元素  	srem se1 2
   随机删除元素    spop se1 2   # 随机删除2个
4、判断集合中元素是否存在(存在返回1,否则返回0)   sismember se1 3
5、获取集合元素的个数		scard se1
6、随机返回元素(+正数表示不重复,-反之)	srandmember se1
7、交集:sinter  se1  se2
  存储交集:sinterstore  se3  se1  se2
8、并集:sunion  se1  se2
   存储并集:sunionstore se4  se1  se2
9、差集:sdiff se1 se2
   存储差集:sdiffstore  se5  se1  se2

5、有序集合 zset (每个元素都关联一个分数)

1、添加5个元素 # math 是此有序集合键名
zadd math 100 bd 60 mr 88 wz 90 ay 38 xb
2、获取对应元素的分数:zscore math bd
   获取所有元素:zrange math 0 -1
   获取元素带分数的:zrange math 0 -1 withscores (从小排到大)
   				  zrevrange math 0 -1 withscores (从大到小)
3、获取指定分数范围内的元素个数
 zrangebyscore math 60 99
 zrangebyscore math (60 (99     # (  表示不取
4、获取指定分数范围内的元素个数
 zcount math (60 99
5、增加元素的分数
 zincrby math 6 mr
6、指定排名删除元素
 zremrangebyrank math 0 2   # 删除1-3的元素
  指定分数删除元素
  zremrangebyscore math 60 90
7、有序集合没有差集,分数在交集、并集集合处理时会相加
  zadd  zes1  1  a  2  b  3  c  4  d  5  e
  zadd  zes2  9  a  8  b  5  e  10  f 12  g
  交集:zinterstore zes3  zes1  zes2
  并集:zunionstore  zes4  zes1  zes2
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Taverry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值