Redis简洁入门

Redis简洁入门?关于 Redis本身的一些语法、命令的使用。

简介?Redis是一款基于键值对的 NoSQL数据库,它的值支持多种数据结构,比如,字符串,哈希,列表,集合,有序集合(sorted sets)等。

Redis将所有的数据都存放在内存中,所以它的读写性能方面堪称秀儿。同时,它还可以将内存中的数据以快照或日志的形式保存在硬盘上,以保证数据的安全性。

Redis典型的应用场景包括:缓存、排行榜、计数器、社交网络、消息队列等等。

「传送门:」https://redis.io/

官网

Windows版本下载

安装使用(Windows版本演示)下载 msi文件,点击安装,一路 next即可。上一步完事之后将其添加到环境变量。上一步完事之后打开黑窗口。输入 redis-cli回车。如出现下图信息,表示安装成功并且服务以及启动。

简单使用换库?默认内置了16个库(0-15)

切库命令:select [索引]

命令

select 1

刷新?如果不需要之前的操作数据,执行 flushdb可以将其刷掉。

命令

flushdb

字符串存?以键值对的形式存储字符串形式的数据,如果需要存储以`-`连接的字符串,用冒号【:】分隔。

示例:存储键为text-count,值为1的字符串。

set test:count 1

取?获取存储的字符串数据也很简单,一条 get命令即可。

示例:取到 key为 test:count的 value。

get test:count

返回:

"1"

改?redis支持对存储的字符串数据进行一些基本的修改操作。

示例:将如上字符串「加一、减一」

#加一

incr test:count

#返回

2

#---------------------

#减一

decr test:count

#返回

1

哈希存?存储哈希的命令:hset

由于哈希值本身也是kv的形式,所以需要两次进行key_value的输入。

示例:存于一个id为1,用户名为 Tisox的用户数据,名为【test-user】。

# 存入用户id

hset test:user id 1

#提示:表示操作成功的提示

(integer) 1

#存入用户名

hset test:username Tisox

#提示

(integer) 1

#------------------------------

取?和字符串存取类似,哈希的取值命令为 hget

示例:对上述存入的test-user信息进行读取。

#取id

hget test:user id

#返回

"1"

#-----------------------------------

#取用户名

hget test:user username

# 返回

"Tisox"

列表?redis里的列表比较特殊,它存储数据的方式可以从左右两边进行,可以视为一个横向的容器。

容器的左右两边都可以进行存取操作。并且列表是有序可重复的。

存?从左边存入:101 102 103

# 从左边存入101 102 103

lpush test:ids 101 102 103

# 提示

(integer) 3

# 查看其长度

llen test:ids

# 返回

(integer) 3

查?列表支持不同的方式进行查看

# 按索引查看

lindex test:ids 0

# 返回

"103"

lindex test:ids 2

# 返回

"101"

# 按范围查看

lrange test:ids 0 2

# 返回

1) "103"

2) "102"

3) "101"

取?由于列表的特性,其取值也可以看作是队列或者栈的出队、出栈等操作。

# 从右侧弹出一个值

lpop test:ids

#返回

"101"

lpop test:ids

#返回

"102"

集合?集合(sets),无序且不重复。

存?往集合中存入一个key为test-language ,值为 Java,C++,Python的数据。

# 存入

add  test:language Java C++ Python

# 提示

(integer) 3

# -----------------------------------

# 统计集合中有多少个元素

scard test:language

# 返回 5

#------------------------------------

# 从集合中随机弹出一个元素:应用场景:【抽奖业务】

spop test:language

# 返回

"Java"

spop test:language

# 返回

"Python"

查?查看集合中的元素

# 查看当前集合中的剩余元素

smembers test:language

# 返回

"C++" # 因为上面已经随机弹出了另外两个数据,所以就剩下了"Python"

有序集合(sorted sets)?给每一个存入的值附加一个分数,按照该分数进行排序的集合。

存?添加学生数据

# 添加学生以及其分数

zadd test:students 10 aaa 20 bbb 30 ccc 40 ddd 50 eee

# 提示

(integer) 5

# 统计集合元素个数

zcard test:students

# 返回

(integer) 5

# 查询某个值的分数

zscore test :students ccc

# 返回

"30"

# 返回目的按照分数排行(0、1、2、3、4.....)

zrank test:students ccc

# 返回

2

# 按照排序,取0-2大小的值

zrange test:students 0 2

# 返回

1) "aaa"

2) "bbb"

3) "ccc"

全局命令?字面意思,这些命令针对全局生效。

# keys *

keys *

# 返回

1) "test:user"

2) "test:language"

3) "text:count"

4) "test:ids"

5) "test:students"

# ----------------------------------

# keys test*

keys test*

# 返回

1) "test:user"

2) "test:language"

3) "text:count"

4) "test:ids"

5) "test:students"

# ------------------------------------

# 查看类型

type test:user

# 返回

hash

# 查看某个key是否存在

exists test:user

# 返回

1 #表示存在

# 输出key

del test:user

# ---------------------------------------

# 设置有效期:秒为单位,过期自动删除

expire test:students 10

管理 Redis前面所有的命令都是基于key的基础上进行的,那么又怎样取管理和操作这些key呢?

以下是一些用来管理 key的常用命令:这里只作一个列举,不会全部进行演示。

# 选择库

select index

index为redis库的索引,共有0-15个索引16个库,默认启用第一个库,索引为0。

# 查看全部的key

keys *

# 通过通配符进行匹配查看

# 查看所有key中以my开头的key

keys my*

注意,如果数据量很大的情况下,一般不建议直接使用 keys*进行查看,该操作的时间复杂度是O(N),的,数据量太大可能会导致阻塞崩溃。

# 查看当前库中有多少key

dbsize

# 清理库中的key

flushdb

这是一个危险且强大的命令,如果使用不当,可能造成将所有的key全部删除,是不可逆的操作,在使用时应该三思。

# 查看key的数据类型

type key

# 判断某个key是否存在

exists key

# 随机返回一个key

randomkey

# 给key重命名

rename key newkey

建议在使用时结合 nx参数使用。

# 删除一个或者多个key

del key1 key2 .....

# 或者

unlink key1 key2 ....

del带阻塞,unlink则没有。

# 渐进式遍历key

# 基础用法,跟一个整数作为游标,表示从何处开始遍历

scan 0

# 进阶用法

scan 0 match counter* count 10

counter*表示匹配的规则,所有以该字符开头的key,

count后的数值表示每轮遍历的数量。

为了方便演示 scan的用法,我们需要有一定数量的key。可以使用 redis自带的压力测试工具来生成这些测试数据。

这个工具存在于 /usr/bin/redisbenmark。

# redisbenchmark的使用命令

redis-benchmark -c 5 -n 100 -r 1000 -a reids密码

上面的命令中:

5表示启动的客户端数量

100表示请求数量

1000表示插入的数据量

密码表示你登录redis客户端的密码

「点点赞赏,手留余香」

赞赏

  • 流风之王
  • 亲亲宝贝kris
  • 2人赞过
2
0
0
评论 0 请文明上网,理性发言

相关文章

  • 阅读本文大约需要16分钟。 大家好,这里是Java后端。 这篇文章我想和你聊一聊Redis的最佳实践。 你的项目或许已经使用Redis很长时间了,但在使用过程中,你可能还会或多或少地遇到以下问题: 我的Redis内存为什么增长这么快?为什么我的Redis操作延迟变大了?如何降低Redis故障发生的频率?日常运维Redi
    多崎作去地坛 8 0 0 条评论
  • 一什么是NoSQL? Nosql=notonlysql(不仅仅是SQL) 关系型数据库:列+行,同一个表下数据的结构是一样的。 非关系型数据库:数据存储没有固定的格式,并且可以进行横向扩展。 NoSQL泛指非关系型数据库,随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0大数据时代!尤其是超大规模的
    不拘车马前 6 1 0 条评论
  • 作者|初一 责编|胡巍巍 不管你是从事Python、Java、Go、PHP、Ruby等等......Redis都应该是一个比较熟悉的中间件。而大部分经常写业务代码的程序员,实际工作中或许只用到了setvalue、GetValue两个操作,而对Redis缺乏一个整体的认识。今天就来对Redis的常见问题做一个总结。希望
    sky追梦赤子xin 8 3 0 条评论
  • 来源:高广超 www.jianshu.com/p/2a4a57c5e313 概述 Redis与其他key–value缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,
    魔仙小千PE 4 13 0 条评论
  • 作者:MagicKaito 本文已收录至我的GitHub 【对线面试官】系列一周两篇持续更新中! Redis前文回顾从零单排学Redis【青铜】 从零单排学Redis【白银】 从零单排学Redis【黄金】 从零单排学Redis【铂金一】 从零单排学Redis【铂金二】 面试前必须要知道的Redis面试题 Redis作为
    楼穆迷你世界 7 0 0 条评论
  • JavaGuide开源版的兄弟《Java面试指北》已经出生。个人能力和精力有限,希望有更多同好参与到JavaGuide开源版本的维护中 你好,我是Guide。今天来推荐一款我平常一直在使用的Redis可视化管理工具,真的非常不错,好用!我会通过和另外一款类似的工具QuickRedis作对比的方式来介绍。 QuickRe
    知足者长乐618 7 3 0 条评论
  • 作者|周明尧 来源|Java旅途(ID:Javatrip)头图|CSDN下载自东方ICRedis是一种基于键值对的NoSQL数据库,它的值主要由string(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)五种基本数据结构构成,除此之外还支持一些其他的数据结构和算法。key都是由字符
    天理昭彰1314 8 0 0 条评论
  • 最近逛了一下Redis官方网站,发现Redis不仅推出了很多新特性,而且还发布了一款可视化工具RedisInsight。试用了一下感觉非常不错,最关键的是能支持RedisJSON之类的新特性,这是第三方工具无法比拟的。今天带大家体验一下RedisInsight,确实非常好用! RedisInsight简介RedisIn
    夏沫茶凉 7 0 0 条评论
  • 如果你做后端,面试八成会被问到Redis,尤其在一些大厂面试里更常见,而且他们不仅要求面试者能简单使用Redis,还要深入理解其底层实现原理,具备解决常见问题的能力。不夸张地说,后端开发的必备技能之一就是做到熟练使用Redis。 但我发现,在工作或面试时,大家还是存在不少各种关于理论、实战或源码方面的问题,比如:如何用
    飞鸟飞鸟98 4 0 0 条评论
  • 作者:贲绍华 爱可生研发中心工程师,负责项目的需求与维护工作。其他身份:柯基铲屎官。 本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 一、集群架构的一些基本概念当我们只使用一台Redis实例也就是Single架构时,需要考虑一些非常实际的问题,如:单节点一但宕机则业务停
    RasalAzazeru 7 3 0 条评论