Redis常用命令

文章详细介绍了NoSQL与RDBMS的区别,包括数据组织、查询语言和事务处理。接着重点讲解了Redis,一种内存数据结构存储系统,具备高性能、丰富的数据类型(如String、Hash、List、Set、SortedSet)和原子性操作。此外,还提到了Redis的连接方法、数据类型及其使用场景,如缓存、计数和存储对象。
摘要由CSDN通过智能技术生成

1·NoSQL和RDBMS的区别

RDBMS --关系型数据库

  • 高度组织化结构化数据。 --表结构 列 列....

  • 结构化查询语言(SQL) sql语句

  • 数据和关系都存储在单独的表中。

  • 数据操纵语言DML,数据定义语言DDL

  • 严格的一致性. ACID 原子性 隔离性 持久性 一致性

  • 基于事务----都支持事务

NoSQL

  • 代表着不仅仅是SQL

  • 没有声明性查询语言

  • 键 - 值对存储。

  • 非结构化和不可预知的数据 字符串 集合 对象 队列

  • 高性能,高可用性和可伸缩性。 ----便于搭建集群---挂载

2.NOSQL的产品

redis----结构基于key和value的形式
mongodb---介于关系型数据库和非关系数据库之间

3.redis简介

Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。Redis提供数据结构[存放的数据类型],例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,地理空间索引和流。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。

4.特点

性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

5.连接redis

5.1 连接本地服务

首先关闭防火墙或者放行redis的端口号

 

6.Redis 数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

7.关于key的命令

keys *: 查看redis中所有的key
del key [key....]: 删除指定key的内容
expire key seconds:  为指定的key设置过期时间
ttl key: 查看当前的key的剩余时间
exists key: 判断指定的key是否存在  返回0表示不存在指定的key  否则表示存在指定的key

关于数据库的命令

默认redis支持数据库的个数为16个

select n: 选择数据库

flushdb: 清空当前库

flushall: 清空所有库的数据

8.redis 常见数据结构以及使用场景分析

8.1 String

常用命令: set,get,decr,incr,mget 等。

String数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字。

常规key-value缓存应用; 常规计数:微博数,粉丝数等。value存储值的大小:512M.

 set key value: 设置指定 key 的值
 get key 获取指定 key 的值。

  mset key value key value .... 同时设置一个或多个 key-value 对。

 

 mget key key ....  获取所有(一个或多个)给定 key 的值。

 

 incr key     将 key 中储存的数字值增一。

 

 将 key 中储存的数字值减一

 

setnx key value 只有在 key 不存在时设置 key 的值。 

 

 因为存在k5 所以存储失败

8.2Hash类型

常用命令: hget,hset,hgetall 等。

Hash 是一个 string 类型的 fifield 和 value 的映射表,hash 特别适合用于存储对象,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值。 比如我们可以Hash数据结构来存储用户信息,商品信息等等。比如下面我就用hash 类型存放了一些信息:

key=JavaUser293847 value={ “id”: 1, “name”: “zhangsan”, “age”: 22, “location”: “Wuhan, Hubei” }

 hset key field value      将哈希表 key 中的字段 field 的值设为 value 。 

 

 hget key field   获取存储在哈希表中指定字段的值 

 

hgetall key   获取在哈希表中指定 key 的所有字段和值 

 

  hkeys  key   获取所有哈希表中的字段

 

 hvals key 获取所有哈希表中的值

 

 8.3list 队列

常用命令: lpush,rpush,lpop,rpop,lrange等list 就是链表,Redis list 的应用场景非常多,也是Redis最重要的数据结构之一,比如微博的关注列表,粉丝列表, 消息列表等功能都可以用Redis的 list 结构来实现。该队列的值可以重复而且有序

Redis list 的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销。另外可以通过 lrange 命令,就是从某个元素开始读取多少个元素,可以基于 list 实现分页查询,这个很棒的一个功能,基于 redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西(一页一页的往下走),性能高。
 

  LPush key  value value value...    将一个或多个值插入到列表头部

 

 lrange key start end   获取列表指定范围内的元素

Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

 

 lpop key   移出并获取列表的第一个元素

 

8.4 set集合类型

常用命令: sadd,spop,smembers,sunion 等

set 对外提供的功能与list类似是一个列表的功能,特殊之处在于 set 是可以自动排重的。

当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在 一个set集合内的重要接口,这个也是list所不能提供的。可以基于 set 轻易实现交集、并集、差集的操作。

比如:在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis可以非常 方便的实现如共同关注、共同粉丝、共同喜好等功能。这个过程也就是求交集的过程,具体命令如下:

sinterstore key1 key2key3将交集存在key1内

 sadd key value value ....向集合添加一个或多个成员 

 

smemebers key 返回集合中的所有成员 

 

  SRANDMEMBER KEY 随机获取一个或多个元素

 

sinter key key: 返回给定所有集合的交集 

 

8.5 sort set有序集合

常用命令: zadd,zrange,zrem,zcard等

和set相比,sorted set增加了一个权重参数score,使得集合中的元素能够按score进行有序排列。

举例: 在直播系统中,实时排行信息包含直播间在线用户列表,各种礼物排行榜,弹幕消息(可以理解为按消息维度的消息排行榜)等信息,适合使用 Redis 中的 SortedSet 结构进行存储。

zadd key  score value score value :向有序集合添加一个或多个成员,或者更新已存在成员的分数 

 

 zrange key        通过索引区间返回有序集合成指定区间内的成员

 

ZREVRANK key start end 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值