1.下载redis
下载链接:https://redis.io/download
下载后使用 tar xcf 文件名来解压,加压后进入文件,然后使用make命令,我执行make命令后,提示没有make,linux系统是ubuntu,apt-get install make,安装make,然后发现有大量报错,有一条是 cc: not found,查找相关资料,系统缺少gcc,使用apt-get install gcc安装,继续执行make ,还是大量报错, fatal error: jemalloc/jemalloc.h: No such file or directory
#include <jemalloc/jemalloc.h>,查找相关资料,原因是jemalloc重载了Linux下的ANSI C的malloc和free函数。解决办法:make时添加参数,make MALLOC=libc,执行完成后,发现Hint: It's a good idea to run 'make test' ;)提示,然后执行make test,提示You need tcl 8.5 or newer in order to run the Redis test,然后执行apt-get install tcl,再次运行make test正常解释,至此,安装完成
2.启动ridis
cd进redis文件夹的src目录下,执行./redis-server,服务启动, 页面停留在Ready to accept connections,查找相关资料发现redis默认为非守护线程运行,也就是非后台,需要修改配置文件启动。
配置文件位置:redis目录下 redis.conf,vi redis.conf 命令打开,,将这里改成yes,
然后使用 ./redis-server ../redis.conf命令启动,
,
使用ps -ef|grep redis命令查看是否启动,
,
客户端启动:
./redis-cli命令启动本地客户端
set命令用来设置key、value
通过客户端来关闭redis服务端
127.0.0.1:6379> shutdown
Redis特性:
redis是开源的高性能的key-value数据库
redis支持将内存中的数据保存到磁盘,可以再重启后再次使用
redis数据类型(5种):
1.String,字符串,是二进制安全的,操作:
SET name "runoob"
"runoob"
GET name
"runoob"
"runoob"
2.Hash,哈希,操作:
redis> HMSET myhash field1 "Hello" field2 "World"
"OK"
redis> HGET myhash field1
"Hello"
redis> HGET myhash field2
"World"
> HMSET myhash field1 "Hello" field2 "World"
"OK"
redis> HGET myhash field1
"Hello"
redis> HGET myhash field2
"World"
3.list,String列表,按照插入顺序排序,操作:
edis 127.0.0.1:6379> lpush runoob redis
(integer) 1
redis 127.0.0.1:6379> lpush runoob mongodb
(integer) 2
redis 127.0.0.1:6379> lpush runoob rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange runoob 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379>
127.0.0.1:6379> lpush runoob redis
(integer) 1
redis 127.0.0.1:6379> lpush runoob mongodb
(integer) 2
redis 127.0.0.1:6379> lpush runoob rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange runoob 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379>
4.set,String集合,操作:
redis 127.0.0.1:6379> sadd runoob redis
(integer) 1
redis 127.0.0.1:6379> sadd runoob mongodb
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers runoob
1) "redis"
2) "rabitmq"
3) "mongodb"
127.0.0.1:6379> sadd runoob redis
(integer) 1
redis 127.0.0.1:6379> sadd runoob mongodb
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers runoob
1) "redis"
2) "rabitmq"
3) "mongodb"
5.zset(sorted set),String有序集合,操作:
redis 127.0.0.1:6379> zadd runoob 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> > ZRANGEBYSCORE runoob 0 1000
1) "mongodb"
2) "rabitmq"
3) "redis"
127.0.0.1:6379> zadd runoob 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> > ZRANGEBYSCORE runoob 0 1000
1) "mongodb"
2) "rabitmq"
3) "redis"
注意:
key,不能太长,尽量不要超过1024字节
Redis数据持久化:
1.RDB:将数据快照保存在磁盘中
2.AOF:将执行过的命令保存下来,下载启动时将命令重新执行一次,数据一直是追加,当文件到达阈值时,会对文件进行重写
Redis事务机制:
Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:
- 批量操作在发送 EXEC 命令前被放入队列缓存。
- 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
- 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
一个事务从开始到执行会经历以下三个阶段:
- 开始事务。
- 命令入队。
- 执行事务。
MULTI :开始事务
EXEC : 执行事务
redis命令是原子性,但是redis事务不是原子性,不会回滚
redis 127.0.0.1:7000> multi
OK
redis 127.0.0.1:7000> set a aaa
QUEUED
redis 127.0.0.1:7000> set b bbb
QUEUED
redis 127.0.0.1:7000> set c ccc
QUEUED
redis 127.0.0.1:7000> exec
127.0.0.1:7000> multi
OK
redis 127.0.0.1:7000> set a aaa
QUEUED
redis 127.0.0.1:7000> set b bbb
QUEUED
redis 127.0.0.1:7000> set c ccc
QUEUED
redis 127.0.0.1:7000> exec
https://promotion.aliyun.com/ntms/act/enterprise-discount.html?userCode=1qylypgj
【助力企业上云】性能级主机2-5折
阿里云活动,服务器便宜卖哦,通过此链接注册购买,可联系作者协助部署搭建服务器环境。QQ(814341142)