- 开源(BSD协议)使用C语言编写,基于内存存储,支持持久化,高性能key-value的NoSQL数据库
- 支持数据结构类型丰富,字符串(strings),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets与范围查询,bitmaps,hyperloglogs和地理空间(geospatial)索引半径查询。
- 支持丰富的主流语言的客户端,C ,C++ ,python,Erlang, C# ,R,java,PHP,Go等
- 用途:缓存,数据库,消息中间件
- 官方网站:https://redis.io/
Redis-5.0.0
Redis 安装
第一步:下载安装包并解压
wget http://download.redis.io/releases/redis-5.0.0.tar.gz
tar -zxvf redis-5.0.0.tar.gz
第二步:下载编译安装的依赖gcc gcc-c++
yum install gcc gcc-c++ -y
第三步:编译安装
cd redis-5.0.0
make
cp src/redis-server /usr/bin/
cp src/redis-cli /usr/bin/
任意路径下使用命令
cp src/redis-server /usr/bin/
cp src/redis-cli /usr/bin/
redis配置文件参数:
bind 127.0.0.1 #对外提供链接的地址
port 6379 #默认端口号
daemonize no #守护进程(如果是yes后台运行)
databases 16 #(redis数据库用0,1,2,3....代表)
save 900 1 #每900秒有1次增删改操作就同步到磁盘当中
dbfilename dump.rdb #rdb备份方式的文件名字(默认开启)
dir ./ #备份文件存放位置
appendonly no #aof备份是否开启(默认不开启)
appendfilename "appendonly.aof" #aof备份文件名称
appendfsync everysec #aof同步机制,每秒同步到磁盘当中
启动redis
第一步:修改配置文件(守护进程,后台运行释放终端)
╭─root@localhost.localdomain ~/redis-5.0.0
╰─➤ vim redis.conf
...
daemonize yes
...
第二步:启动命令:
╭─root@localhost.localdomain ~/redis-5.0.0
╰─➤ redis-server redis.conf
第三步:连接redis-server
redis-cli -p 6379 -h 127.0.0.1
简单操作
切换数据库:
select 2
字符串
作用 | 内容 | 实例 |
---|---|---|
添加: | set key value | set username balabala |
删除: | del key | del username |
设置过期时间 | set key value EX timeout | setex key timeout value |
查看过期时间 | ttl key | ttl username |
查看当前redis所有的key | keys * |
列表
作用 | 内容 |
---|---|
在列表左边添加元素: | lpush key value |
在列表右边添加元素: | rpush key value |
查看列表中的元素: | lrange key start stop |
移除并返回列表key的头元素: | lpop key |
移除并返回列表的尾元素: | rpop key |
指定返回第几个元素: | lindex key index |
获取列表中的元素个数: | llen key |
删除指定的元素: | lrem key count value |
集合
作用 | 内容 | 实例 |
---|---|---|
添加元素: | sadd set value1 value2.... | sadd team xiaotuo datuo |
查看元素: | smembeers set | smembers team |
移除元素: | srem set member... | srem team xiaotuo datuo |
查看集合中的元素个数: | scard set | scard team1 |
获取多个集合的交集: | sinter set1 set2 | sinter team1 team2 |
获取多个集合的并集: | sunion set1 set2 | sunion team1 team2 |
获取多个集合的差集: | sdiff set1 set2 | sdiff team1 team2 |
哈希
作用 | 内容 | 实例 |
---|---|---|
添加一个新值: | hset key field value | hset website baidu baidu.com |
获取哈希中的field对应的值: | hget key field | hget website baidu |
删除field中的某个field: | hdel key field | hdel website baidu |
获取某个哈希中所有的field和value: | hgetall key | hgetall website |
获取某个哈希中所有的field: | hkeys key | hkeys website |
获取某个哈希中所有的值: | hvals key | hvals website |
判断哈希中是否存在某个field: | hexists key field | hexists website baidu |
获取哈希中总共的键值对: | hlen field | hlen website |
事物操作:
Redis事务可以一次执行多个命令,事务具有以下特征:
事务 | 内容 |
---|---|
隔离操作 | 事务中的所有命令都会序列化、按顺序地执行,不会被其他命令打扰。 |
原子操作 | 事务中的命令要么全部被执行,要么全部都不执行。 |
开启一个事务 | multi |
提交事务 | exec |
回滚事务 | discard |