Redis 入门

一、Redis是什么

Redis是完全开源免费的,用C语言编写,是一个单线程、高性能的(key / value)内存数据库,基于内存运行并支持持久化的nosql数据库。

安装:

Installation
From source code
Download, extract and compile Redis with:

$ wget https://download.redis.io/releases/redis-6.2.3.tar.gz
$ tar xzf redis-6.2.3.tar.gz
$ cd redis-6.2.3
$ make
The binaries that are now compiled are available in the src directory. Run Redis with:

$ src/redis-server
You can interact with Redis using the built-in client:

$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

二、Redis数据结构

主要核心数据类型如下:
Redis 入门

2.1、String 操作
Redis 入门
Redis 入门

我们平时在使用redis存储一个对象的时候,一般都是set userId JSON. 存储前将user序列化成json,获取的时候根据userId获取,然后反序列化成对象。这样比较直观和简单,但是存在一些问题,就是不太灵活。

还有一个中存储方式是,按照key(对象名:ID:属性), value(属性内容)去存储,这样数据结构就是:

set user:1:name test
set user:1:money 9999
127.0.0.1:6379> get user:1:money
"9999"
127.0.0.1:6379> get user:1:name
"test"
127.0.0.1:6379>

这样我们就可以直接获取到对象的属性,而且如果某个属性修改的时候,就可以更方便的只对某个属性进行修改了。不过这样的缺点,就是key会比较多。

Redis 入门
当key不存在的时候才会设置成功并返回1,key已经存在的话设置失败返回0.

Redis 入门
可以使用redis的incrby命令生成分布式系统全局ID,类似于雪花算法。

但是这个命令每次执行就加1,获取到一个新的全局ID。但是如果每次都这样来生成ID,那么redis压力太大了,所以我们可以直接增加1000,想等于一次生成1000个id,然后本机内存中保存加了1000后的这个数,然后在维护一个增长的数字当做ID。如果到达1000,继续去redis生成一个加1000的。目的是减少和redis的交互。

127.0.0.1:6379> incrby orderId 
(error) ERR wrong number of arguments for 'incrby' command
127.0.0.1:6379> incrby orderId 1
(integer) 1
127.0.0.1:6379> get orderId
"1"
127.0.0.1:6379> incrby orderId 1
(integer) 2
127.0.0.1:6379> 
127.0.0.1:6379> get orderId
"2"
127.0.0.1:6379> incrby orderId 100  // 一下增长100个
(integer) 102
127.0.0.1:6379> get orderId
"102"
127.0.0.1:6379>

2.2、Hash 操作

Redis 入门
Redis 入门
我们可以使用Hash数据结构来缓存一些对象。但是如果用户表user中有几十万条记录,那么此时redis中会缓存大量的数据。当我们使用hgetall key的时候,一下子可能会返回几十倍的数据,redis可能要执行非常久的时间!这样redis就会直接阻塞其他命令。Redis最怕的就是bugkey.

Redis 入门

上一篇:聚合接口对接,加油卡,流量充值,话费充值


下一篇:RocketMQ事务消息