简介
REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD
协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。Redis
通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted
sets)等类型。
Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
优势
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
安装
Windows 下安装
下载地址:https://github.com/tporadowski/redis/releases。
Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis。
打开文件夹,内容如下:
打开一个 cmd 窗口 使用 cd 命令切换到redis根目录运行:
redis-server.exe redis.windows.conf
输入之后,会显示如下界面:
这时候另启一个 cmd 窗口,原来的不要关闭,不然就无法访问服务端了。
切换到 redis 目录下运行:
redis-cli.exe -h 127.0.0.1 -p 6379
设置键值对:
set myKey abc
取出键值对:
get myKey
Linux 源码安装
下载地址:http://redis.io/download,下载最新稳定版本。
本教程使用的最新文档版本为 2.8.17,下载并安装:
# wget http://download.redis.io/releases/redis-6.0.8.tar.gz
# tar xzf redis-6.0.8.tar.gz
# cd redis-6.0.8
# make
执行完 make
命令后,redis-6.0.8 的 src 目录下会出现编译后的 redis 服务程序 redis-server,还有用于测试的客户端程序 redis-cli:
下面启动 redis 服务:
# cd src
# ./redis-server
注意这种方式启动 redis 使用的是默认配置。也可以通过启动参数告诉 redis 使用指定配置文件使用下面命令启动.
# cd src
# ./redis-server ../redis.conf
redis.conf 是一个默认的配置文件。我们可以根据需要使用自己的配置文件。
启动 redis 服务进程后,就可以使用测试客户端程序 redis-cli 和 redis 服务交互了。 比如:
# cd src
# ./redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
Ubuntu apt 命令安装
在 Ubuntu 系统安装 Redis 可以使用以下命令:
# sudo apt update
# sudo apt install redis-server
启动 Redis
# redis-server
查看 redis 是否启动?
# redis-cli
以上命令将打开以下终端:
redis 127.0.0.1:6379>
127.0.0.1 是本机 IP ,6379 是 redis 服务端口。现在我们输入 PING 命令
redis 127.0.0.1:6379> ping
PONG
以上说明我们已经成功安装了redis
类型
数据库16个 0-15
类型 string ,hash ,list ,set ,sort set
命令行
使用第一个数据库
select 0
查询键
keys *
删除键
del key
APP功能,1天后消息自动删除
expire key 秒
返回给定 key 的剩余生存时间
TTL key
randomkey 随机给个KEY
----string----
- set key value 设置指定 key 的值
- get key 获取指定 key 的值
- STRLEN key key 所储存的字符串值的长度
- 点赞、直播间用户 +1 -1
- INCR key 将 key 中储存的数字值增一
- DECR key 将 key 中储存的数字值减一
- INCRBY key increment
- DECRBY key decrement
能不能装对象? JSON
set temo “{“name”:“yangang”}”
----hash----
- hset key 属性 值
- hmset key 属性1 值1 属性2 值2 属性3 值3
- HKEYS key 显示对象所有属性
- HVALS key 显示所有值
- HGET key field 取值
- HMGET key field field field 获取给定字段的值
- HDEL key field1 [field2] 删除一个或多个字段
-----list-----
- LPUSH key value1 [value2] 头部增加
- RPUSH key value1 [value2] 尾部增加
- LLEN key 获取列表长度
- LINDEX key index 通过索引获取列表中的元素
- LRANGE key start stop 获取列表指定范围内的元素
- LPOP key 移出并获取列表的第一个元素
- RPOP key 移出最后一个元素并返回该元素
---------set--------去重复--------
- SADD key member1 向集合添加一个或多个成员
- SREM key member1 移除集合中一个或多个成员
- SPOP key 移除并返回集合中的一个随机元素
- SMEMBERS key 返回集合中的所有成员
- 差集 SDIFF key1 [key2]
- 交集 SINTER key1 [key2]
- 并集 SUNION key1 [key2]
A = 5人 180 A,B,C,D,E
B = 10人 20w B,E,F,G,H,Y
-----sorted set有序集合------------
- ZADD key score1 member1 [score2 member2]向有序集合添加一个或多个成员,或者更新已存在成员的分数
- ZCARD key获取有序集合的成员数
- ZCOUNT key min max计算在有序集合中指定区间分数的成员数
- ZINCRBY key increment member 自增
- ZLEXCOUNT key min max 计算指定区间的成员数
- ZRANGE key start stop [WITHSCORES]通过索引区间返回有序集合指定区间内的成员
- ZRANGEBYLEX key min max [LIMIT offset count]通过字典区间返回有序集合的成员
- ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]通过分数返回有序集合指定区间内的成员
- ZRANK key member返回有序集合中指定成员的索引
- ZSCORE key member返回有序集中,成员的分数值
- ZREM key member[member1 …]移除一个或多个
本文参考:菜鸟教程https://www.runoob.com/redis/redis-sorted-sets.html