Redis 系列之扫盲篇(一)

发布于: 2020 年 06 月 17 日
Redis系列之扫盲篇(一)

作者:z小赵

一枚用心坚持写原创的“无趣”程序猿,在自身受益的同时也让朋友们在技术上有所提升。

目录

  1. ​Redis 是什么?

  2. Redis 安装。

  3. 基础命令扫盲。

Redis 是什么?

Redis 是一款由 C 语言编写的、分布式的高性能的非关系型数据库,其拥有超高的吞吐量(每秒 10w,我司实际使用场景中单端口读请求最高 8w,写请求 5w,具体得看实际使用场景和机器性能),但由于其基于内存操作的,内存相对比较昂贵的,所以一般只有在并发相对比较高且存储要求相对较小的场景中被广泛使用(如果有钱一般可以不用考虑内存的事情,哈哈)。

想说一句多余的话,为什么要学习 Redis 呢?在我看来就两点:

  • 为了当下实际业务使用而学习

  • 为了进大厂

为了这两个目标,想学习的朋友们抓紧上车,一起开启愉快的学习旅程。

Redis 安装

  1. 下载地址

  • http://download.redis.io/releases/

  1. 安装

$ ls
redis-3.0.0.tar.gz
# 减压
$ tar -zxvf redis-3.0.0.tar.gz
# 编译测试
$ sudo make test
# 编译安装
$ sudo make install
# 以后台的方式启动Redis
$ ./redis-server ~/software/redis-4.0.10/redis.conf &
# 查看Redis进程
$ ps -ef | grep redis
# 登录Redis客户端,Redis默认配置启动端口是6379,可以通过修改配置替换端口
$ ./redis-cli -h localhost -p 6379

基础命令扫盲

key 常用操作

# 查询指定key是否存在
$ localhost:6379> EXISTS hash1
(integer) 1
$ localhost:6379> EXISTS jjj
(integer) 0
# 删除指定key
$ localhost:6379> DEL hash1
(integer) 1
$ localhost:6379> EXISTS hash1
(integer) 0
# 对指定key设置过期时间
$ localhost:6379> set t1 value ex 5
OK
# 查询指定key的过期时间
$ localhost:6379> TTL t1
(integer) 7
# 查询指定key的类型
$ localhost:6379> type t1
string

kv 结构

# 设置key 对应的value
$ localhost:6379> set key1 value1
OK
# 获取key对应的value
$ localhost:6379> get key1
"value1"
# 设置带有过期时间的key,EX标识5秒后过期,单位秒
$ localhost:6379> set key2 value2 EX 5
OK
# 设置带有过期时间的key,PX表示5秒后过期,单位毫秒
# 设置key,如果其不存在的话,NX
$ localhost:6379> set key3 vlaue3 NX
OK
# 如果key存在的话,则直接返回nil
$ localhost:6379> set key3 value3 NX
(nil)

list 结构

# 从左侧插入元素
$ localhost:6379> LPUSH list1 1
(integer) 1
# 从右侧插入元素
$ localhost:6379> RPUSH list1 2
(integer) 2
# 查看集合内的元素,-1 表示查看所有元素
$ localhost:6379> LRANGE list1 0 -1
1) "1"
2) "2"
# 查看list的元素个数
$ localhost:6379> LLEN list1
(integer) 2
# 根据索引查询对应的元素,如果指定的索引不存在,则返回'nil'
$ localhost:6379> LINDEX list1 0
"2"
# 从列表左侧移除一个元素
$ 127.0.0.1:6379> LPOP list1
"5"
# 从列表右侧移除一个元素
$ 127.0.0.1:6379> RPOP list1
"1"
# 从列表右侧移除一个元素添加到左侧
$ localhost:6379> LRANGE list1 0 -1
1) "three"
2) "two"
3) "one"
$ localhost:6379> RPOPLPUSH list1 list2
"one"
$ localhost:6379> LRANGE list2 0 -1
1) "one"

set 结构

# 向set中添加一个元素
$ localhost:6379> SADD set1 'one' 'two' 'three'
(integer) 3
# 获取set集合中的元素
$ localhost:6379> SMEMBERS set1
1) "one"
2) "three"
3) "two
# 从set集合中移除一个或多个元素
$ localhost:6379> SREM set1 'one'
(integer) 1
# 从set集合中移除一个或多个元素并返回被删除元素
$ localhost:6379> SPOP set1 1
1) "three"
# 获取当前set集合元素个数
$ localhost:6379> SCARD set1
(integer) 3
# 从set集合随机获取元素但不删除
$ localhost:6379> SRANDMEMBER set1 1
1) "one"
$ localhost:6379> SMEMBERS set1
1) "three"
2) "two"
3) "one"
# 判断set集合中是否存在指定元素,如果存在则返回1,不存在返回0
$ localhost:6379> SISMEMBER set1 'one'
(integer) 1
$ localhost:6379> SISMEMBER set1 '4'
(integer) 0

sorted set 结构

# 向有序集合中添加元素
$ localhost:6379> ZADD zset1 1 'one'
(integer) 1
# 获取有序集合中指定分数范围的元素
$ localhost:6379> ZRANGE zset1 0 -1
1) "one"
2) "two"
3) "three"
# 删除有序集合中的元素
$ localhost:6379> ZREM zset1 'one'
(integer) 1
# 获取有序集合元素个数
$ localhost:6379> ZCARD zset1
(integer) 2
# 为有序集合中指定成员增加指定个数
$ localhost:6379> ZINCRBY zset1 2 "one"
"4"
$ localhost:6379> ZRANGE zset1 0 -1 WITHSCORES
1) "two"
2) "2"
3) "three"
4) "3"
5) "one"
6) "4"
# 获取有序集合指定分数范围内的元素数量
$ localhost:6379> ZCOUNT zset1 0 2
(integer) 1
# 获取元素在有序集合中的排名,分数越大,排名值越大
$ localhost:6379> ZRANK zset1 'one'
(integer) 2
# 获取元素在有序集合中的排名。分数越大,排名值越小
$ localhost:6379> ZREVRANK zset1 'one'
(integer) 0
# 获取指定元素的分值
$ localhost:6379> ZSCORE zset1 'one'
"4"

hash 结构

# 向hash集合中添加一个元素
$ localhost:6379> HSET hash1 field1 1
(integer) 1
# 向hash集合中添加多个元素
$ localhost:6379> HMSET hash1 field2 2 field3 3
OK
# 获取指定field对应的value
$ localhost:6379> HGET hash1 field1
"1"
# 批量获取指定field下的value
$ localhost:6379> HMGET hash1 field1 field2 field3
1) "1"
2) "2"
3) "3"
# 获取hash结合里面所有元素
$ localhost:6379> HGETALL hash1
1) "filed1"
2) "1"
3) "filed2"
4) "2"
5) "filed3"
6) "3"
7) "field3"
8) "3"
# 判断指定filed是否在Hash结构中存在
$ localhost:6379> HEXISTS hash1 field1
(integer) 1
$ localhost:6379> HEXISTS hash1 field5
(integer) 0
# 从hash结构中删除一个或多个field
$ localhost:6379> HDEL hash1 field1 field2
(integer) 2
# 对hash集合中指定field的value增加值
$ localhost:6379> HINCRBY hash1 field1 2
(integer) 3
$ localhost:6379> HGET hash1 field1
"3"
# 获取hash结构中所有的key
$ localhost:6379> HKEYS hash1
1) "filed1"
2) "filed2"
3) "filed3"
4) "field3"
5) "field1"
$ 获取hash集合中所有的value
$ localhost:6379> HVALS hash1
1) "1"
2) "2"
3) "3"
4) "3"
5) "3"
# 获取hash集合中的元素个数
$ localhost:6379> HLEN hash1
(integer) 5

总结

本文介绍了实际生产中常见常用的命令,更多详细命令使用及介绍可以查看官网,如果觉得看的费劲的话,也可访问中文网站。

  • 官网:https://redis.io/commands

  • 中文网站:http://www.redis.cn/commands.html#

今天文章主要是 Redis 基础使用扫盲,下面文章开始趴一下 Redis 的底层实现,看看它为啥那么快,敬请期待。


往期精选推荐

你必须要知道集群内部工作原理的一些事!

消息是如何在服务端存储与读取的,你真的知道吗? 

一文读懂消费者背后的那点"猫腻"

发布于: 2020 年 06 月 17 日 阅读数: 20
用户头像

z小赵

关注

高并发系统、大数据技术栈、研究框架源码 2018.09.17 加入

擅长高并发系统设计,熟悉大数据生态圈及框架的使用,喜欢研究框架源码,包括且不限于Spring、Kafka等源码的研究。

评论

发布
暂无评论
Redis系列之扫盲篇(一)