【golang长途旅行第35站】Redis
Redis
Redis基本介绍
Redis(Remote Dictionary Server)是一个开源的、基于内存的键值对存储系统。它通常被归类为一种 NoSQL 数据库,也被称为“数据结构服务器”,因为它支持的不仅仅是简单的字符串键值对,而是丰富的数据结构(String,Set,List,Hash等等)
它的核心特点是极致的速度
数据主要存储在内存(RAM)中,这使得读写速度非常快,通常能达到微秒级别的响应。这是 Redis 高性能的主要原因
它也支持持久化,可以将内存中的数据异步保存到磁盘上,以防止服务器重启或宕机导致数据丢失。
Redis的五大数据类型:
String(字符串)、Hash(哈希)、List(列表)、Set(集合)、zset(有序集合)
官网:
https://redis.io/
https://redis.cn/
使用教程
https://redisdoc.com.cn/
https://www.runoob.com/redis/redis-tutorial.html
快速入门
Redis安装好后,默认有16个数据库,初始默认使用0号库,编号是0…15。
-
添加key-val:set
-
查看当前redis的所有key:keys *
-
获取key对应的值:get key
-
切换redis数据库:select index
-
查看当前数据库的key-val数量:dbsize
-
清空当前数据库的key-val:flushdb
-
清空所有数据库的key-val:flushall
Redis对String的操作
基本介绍
Redis 的 String 类型是简单的 键值对 结构
- 键 (Key):永远是一个字符串。
- 值 (Value):也可以是字符串(包括任何格式的数据,如文本、数字、序列化的对象甚至图片二进制数据)。值得内容最大512MB
CURD------Create(创建)、Update(更新)、Read(读取)、Delete(删除)
set key value
get key
del key1 key2…
同时删除一个或者多个键值对
返回被删除的键的总数(不包括不存在的键)
setex key second value
这个键值对的有效时间为second秒,过后不存在
mset key1 value1 key2 value2…
mget key1 key2…
同时设置/获取一个或者多个键值对
Redis对Hash的操作
基本介绍
Redis Hash 是一个 string 类型的 field(字段)和 value(值)的映射表。它非常适合用来存储对象。
类似于golang中的map:
var myMap map[string]string
而Hash就类似于这个myMap
CURD
hset myMap name xxx
hset myMap age 11
hget myMap name
hgetall myMap 一次性去除所有的键值对,默认是按字段插入顺序输出
hmset key1 value1 key2 value2 key3 value3…
hmget key1 key2…
hlen myMap 查看这个Hash里有多少个键值对
hexists myMap key 查看这个Hash里有没有这个键值对 有/无(1/0)
Redis对List的操作
基本介绍
Redis 的 List 是一个简单的 字符串列表。你可以把它想象成一个双向链表,这意味着你可以在列表的头部(左边) 或尾部(右边) 高效地添加和删除元素。
它的核心特点是 按插入顺序排序,并且元素可以重复。
CURD
List 的命令通常以 L(Left/左)或 R(Right/右)开头。
LPUSH key element1 element2…
将一个或多个值插入到列表头部
RPUSH key element1 element2…
将一个或多个值插入到列表尾部
LPOP key
移除并返回列表的第一个元素
RPOP key
移除并返回列表的最后一个元素
LRANGE key start stop
获取列表指定范围内的元素
0是第一个元素的下标
1是第二个元素的下标
-1是倒数第一个元素的下标
-2是倒数第二个元素的下标
del key
删除这个List
llen key
返回这个List的长度,如果不存在,则返回0,视作空列表
注意事项
如果所有的值都被删除了
那这个List也就没了
Redis对Set的操作
基本介绍
Redis 的 Set 是 String 类型的无序集合。它最大的特点是:
- 无序性:集合中的元素没有顺序。
- 唯一性:集合中的元素都是唯一的,不允许重复。
CURD
SADD key member1 member2
向Set中设置元素
返回成功设置的元素的个数
SMEMBERS key
从Set中取出所有元素
sismember key member1
判断key这个Set中有没有member1这个元素 有/无(1/0)
srem key member1
删除Set中的member1元素,删除成功/失败(1/0)