Redis完全入门

1 安装

1.1 获取redis资源

wget http://download.redis.io/releases/redis-4.0.8.tar.gz

1.2 解压

tar xzvf redis-4.0.8.tar.gz

1.3 安装

cd redis-4.0.8
make
cd src
make install PREFIX=/usr/local/redis

安装时候可能失败,一般情况下需要更新或者安装gcc,可根据报错提示自行百度

1.4 移动配置文件到安装目录下

mkdir /usr/local/redis/etc
cd ../
mv redis.conf /usr/local/redis/etc

1.5 配置redis为后台启动

vi /usr/local/redis/etc/redis.conf 

找到daemonize,将该属性后边的no改为yes

1.6 将redis加入到开机启动

vi /etc/rc.local

添加/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
意思就是开机调用这段开启redis的命令

1.7 开启redis

/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

1.8 配置环境变量

将redis-cli和redis-server拷贝到/usr/local/bin/下,让redis-cliredis-server指令可以在任意目录下直接使用

cp /usr/local/redis/bin/redis-server /usr/local/bin/
cp /usr/local/redis/bin/redis-cli /usr/local/bin/

1.9 设置redis密码

步骤1 进入redis客户端
redis-cli
步骤2 设置密码
config set requirepass ****

****为要设置的密码,设置成功的话会返回‘OK’字样
完成后重启Redis

步骤3 测试连接

有密码的情况下两种登录方法
方法1:redis-cli -h 127.0.0.1 -p 6379 -a ****(****为你设置的密码)

redis-cli -h 127.0.0.1 -p 6379 -a ****

方法2:redis-cli 进入命令模式后,auth ***** (****为你设置的密码)

redis-cli
auth *****

1.10 让外网能够访问redis

步骤1 防火墙开放6379端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
步骤2 重启防火墙
systemctl restart firewalld
步骤3 修改redis.conf
vi /usr/local/redis/etc/redis.conf 

在bind 127.0.0.1前边加#,表示注释此条配置

步骤4 其他配置修改

redis-cli连接到redis后,通过config get daemonizeconfig get protected-mode查看配置是不是都为no,如果不是,就用config set 配置名 属性改为no。
例:

config set daemonize no
config set protected-mode no

1.11 其他常用相关命令

启动redis:
redis-server /usr/local/redis/etc/redis.conf
停止redis:pkill redis或redis-cli shutdown
卸载redis:
删除安装目录:rm -rf /usr/local/redis
删除所有redis相关命令脚本:rm -rf /usr/bin/redis-*
删除redis解压文件夹:rm -rf /root/download/redis-4.0.4
检测redis后台进程是否存在:ps -ef |grep redis
检测6379端口是否被占用:netstat -lntp | grep 6379
检测是否有安装redis-cli:whereis redis-cli
检测是否有安装redis-server:whereis redis-server

2 Redis客户端常见操作

Redis是key-value数据库,支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

2.1 当value是string类型

命令包括set get setnx incr del 等。

> set server:name "fido"  // 设置键值
OK

> get server:name  // 获取键值
"fido"

> setnx connections 10   // set if not exists
OK

> incr connections   // 原子性增加values值
(integer) 11
> incr connections
(integer) 12

> del connections  // 删除key
(integer) 1

> incr connections
(integer) 1

2.2 当value是list类型

命令包括rpush lpush llen lrange lpop rpop del 等。

> rpush friends "Alice"   // 在末尾追加
(integer) 1
> rpush friends "Bob"
(integer) 2

> lpush friends "Sam"    // 插入到开头
(integer) 3

> lrange friends 0 -1     // 返回列表的子集,类似切片操作
1) "Sam"
2) "Alice"
3) "Bob"
> lrange friends 0 1
1) "Sam"
2) "Alice"
> lrange friends 1 2
1) "Alice"
2) "Bob"

> llen friends   // 返回列表长度
(integer) 3

> lpop friends   // 删除并返回列表第一个元素
"Sam"

> rpop friends   // 删除并返回列表最后一个元素
"Bob"

> lrange friends 0 -1
1) "Alice"

> del friends    // 删除key
(integer) 1     // 1表示成功,0表示失败

2.3 当value是set类型

命令包括sadd srem sismember smembers sunion del等。

> sadd superpowers "flight"     // 添加元素
(integer) 1
> sadd superpowers "x-ray vision"
(integer) 1
> sadd superpowers "reflexes"
(integer) 1

> srem superpowers "reflexes"   // 删除元素
1

> sismember superpowers "flight"   // 测试元素是否在集合中
(integer) 1
> sismember superpowers "reflexes"
(integer) 0

> smembers superpowers    // 返回集合中所有元素
1) "x-ray vision"
2) "flight"

> sadd birdpowers "pecking"
(integer) 1
> sadd birdpowers "flight"
(integer) 1

> sunion superpowers birdpowers    // 合并多个set,返回合并后的元素列表
1) "x-ray vision"
2) "flight"
3) "pecking"

> del superpowers   // 删除key
(integer) 1

2.4 当value是zset类型

命令包括 zadd zrange del等,注意给value一个编号用于排序。

> zadd hacker 1940 "Alan Kay"     // 给value指定一个编号,比如以年份1940作为编号
(integer) 1
> zadd hacker 1906 "Grace Hopper"
(integer) 1
> zadd hacker 1953 "Richard Stallman"
(integer) 1
> zadd hacker 1965 "Yukihiro Matsumoto"
(integer) 1
> zadd hacker 1916 "Claude Shannon"
(integer) 1
> zadd hacker 1969 "Linux Torvalds"
(integer) 1
> zadd hacker 1957 "Sophie Wilson"
(integer) 1
> zadd hacker 1912 "Alan Turing"
(integer) 1

> zrange hacker 2 4    // 切片返回有序集合中元素
1) "Claude Shannon"
2) "Alan Kay"
3) "Richard Stallman"

> del hacker    // 删除key
(integer) 1

2.5 当value是hash类型

hash类型可以理解为字典,需要给value指定一个field用于映射,命令包括hset hmset hget hgetall hdel hincrby del 等。

> hset user:1000 name "John Smith"   // 给value指定一个field,比如name
(integer) 1
> hset user:1000 email "john.smith@example.com"
(integer) 1
> hset user:1000 password "s3cret"
(integer) 1

> hgetall user:1000   // 获得hash表中所有成员,包括field和value
1) "name"
2) "John Smith"
3) "email"
4) "john.smith@example.com"
5) "password"
6) "s3cret"
 
> hmset user:1001 name "Mary Jones" password "hidden" email
"mjones@example.com"   // 设置多个field和value
OK

> hget user:1001 name   // 根据field获取value
"Mary Jones"
  
> hset user:1000 visits 10    // field可以映射到数字值
(integer) 1

> hincrby user:1000 visits 1    // 原子性增加value的值,增加1
(integer) 11
> hincrby user:1000 visits 10    // 增加10
(integer) 21

> hdel user:1000 visits      // 删除field及其value
(integer) 1

> hincrby user:1000 visits 1
(integer) 1
 
> del user:1000     // 删除key
(integer) 1

2.6 设置和查看key的生命周期

key过期会被自动删除,命令包括expire ttl 等。

> set resource:lock "Redis Demo"
OK

> expire resource:lock 120   // 设置生命周期为120s
(integer) 1

> ttl resource:lock   // 查看当前生命周期还剩多少时间
(integer) 109
> ttl resource:lock   // 120s后查看,返回-2表示已过期或不存在
(integer) -2
 
> set resource:lock "Redis Demo 2"
OK

> ttl resource:lock    // 返回-1表示永不过期
(integer) -1

参考文章https://www.cnblogs.com/happywish/p/10944253.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值