1.首先进行后台启动redis
[root@db ~]# cd /usr/local/redis-stable/
切换到安装目录下
查看是否存在这个文件:redis.conf 配置文件
[root@db redis-stable]# vim redis.conf
进行文件操作
在配置文件里找到下面这个配置项,将no-->yes
daemonize yes
保存配置
[root@db redis-stable]# redis-server ./redis.conf
按照修改过的配置文件启动
[root@db redis-stable]# ps -ef |grep redis;
root 39762 1 0 20:18 ? 00:00:00 redis-server 127.0.0.1:6379
root 39771 2390 0 20:20 pts/0 00:00:00 grep --color=auto redis
查看redis是否启动,显示成功启动(后台启动)
[root@db redis-stable]# cp /usr/local/redis-stable/redis.conf /etc/
拷贝配置文件到etc下,可以在下次启动时,选择etc下的配置文件作为后台启动的文件
[root@db ~]# redis-cli
127.0.0.1:6379>
连接服务
127.0.0.1:6379> ping
PONG
测试成功
127.0.0.1:6379> SHUTDOWN
not connected> exit
关闭服务
2、相关命令
ping
select dbid 选择数据库
dbsize 查看当前数据库有多少个键
flushdb 清空当前数据库中的数据
flushall 清空所有
3.数据类型
(1)string
添加
127.0.0.1:6379> DBSIZE
(integer) 0
127.0.0.1:6379> set mykey myvalue
OK
127.0.0.1:6379> dbsize
(integer) 1
127.0.0.1:6379> set mykey2 100
OK
127.0.0.1:6379> dbsize
(integer) 2
查询
127.0.0.1:6379> get mykey
"myvalue"
127.0.0.1:6379> get mykey2
"100"
删除
127.0.0.1:6379> del mykey
(integer) 1
127.0.0.1:6379> get mykey
(nil)
NX表示如果键存在则添加失败,不存在则ok
127.0.0.1:6379> set mykey myvalue NX
OK
XX为键存在的时候才添加
127.0.0.1:6379> set mykey3 value XX
(nil)
GET会返回键的之前的值
127.0.0.1:6379> set mykey value GET
"myvalue"
127.0.0.1:6379> get mykey
"value"
指定过期时间,单位:秒
127.0.0.1:6379> set mykey4 value EX 10
OK
127.0.0.1:6379> get mykey4
"value"
127.0.0.1:6379> get mykey4
(nil)
EXAT
unix转换时间
[root@db ~]# date -u +%s
1721311588
127.0.0.1:6379> set mykey4 value4 EXAT 1721311608
OK
127.0.0.1:6379> get mykey4
(nil)
指定过期时间,单位:毫秒
PX
1秒=1000毫秒
PXAT
返回 key 中字符串值的子字符,end=-1时表示全部
127.0.0.1:6379> set mykey5 '123456789'
OK
127.0.0.1:6379> get mykey5
"123456789"
127.0.0.1:6379> GETRANGE mykey5 0 5
"123456"
对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)
127.0.0.1:6379> SETBIT mykey5 3 0
(integer) 1
127.0.0.1:6379> GETRANGE mykey5 0 3
"!234"
注意:ascii码对应数字1的二进制:0011 0001,对应!的二进制:0010 0001
这里的setbit即将字符串的第一字符的第三位设置为0,一个字符用8个bit表示
MSET key value [key value …]同时设置一个或多个 key-value 对
MGET key1 [key2…]获取所有(一个或多个)给定 key 的值
127.0.0.1:6379> Mset mykey6 value6 mykey7 value7
OK
127.0.0.1:6379> mget mykey6 mykey7
1) "value6"
2) "value7"
将给定 key 的值设为 value ,并返回 key 的旧值(old value)
127.0.0.1:6379> getset mykey7 value8
"value7"
用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始
127.0.0.1:6379> get mykey7
"value8"
127.0.0.1:6379> SETRANGE mykey7 0 value7
(integer) 6
127.0.0.1:6379> get mykey7
"value7"
返回 key 所储存的字符串值的长度
127.0.0.1:6379> STRLEN mykey7
(integer) 6
将 key 中储存的数字值增一
将 key 所储存的值加上给定的增量值(increment)
127.0.0.1:6379> set mykey8 100
OK
127.0.0.1:6379> INCR mykey8
(integer) 101
127.0.0.1:6379> get mykey8
"101"
127.0.0.1:6379> INCRBY mykey8 50
(integer) 151
127.0.0.1:6379> get mykey8
"151"
减一和定量减
127.0.0.1:6379> get mykey8
"151"
127.0.0.1:6379> DECR mykey8
(integer) 150
127.0.0.1:6379> get mykey8
"150"
127.0.0.1:6379> DECRBY mykey8 50
(integer) 100
127.0.0.1:6379> get mykey8
"100"
如果 key 已经存在并且是一个字符串,APPEND 命令将指定的 value 追加到该 key 原来值 value 的末尾
127.0.0.1:6379> get mykey7
"value7"
127.0.0.1:6379> APPEND mykey7 7
(integer) 7
127.0.0.1:6379> get mykey7
"value77"
(2)list
放入和获取列表指定范围内的元素
左放入
127.0.0.1:6379> lpush mylist 1 2 3
(integer) 3
127.0.0.1:6379> LRANGE mylist 0 2
1) "3"
2) "2"
3) "1"
127.0.0.1:6379> LRANGE mylist 0 -1
1) "3"
2) "2"
3) "1"
右放入
127.0.0.1:6379> RPUSH mylist 6 5 4
(integer) 6
127.0.0.1:6379> LRANGE mylist 0 -1
1) "3"
2) "2"
3) "1"
4) "6"
5) "5"
6) "4"
移出并获取列表的元素
127.0.0.1:6379> LPUSH mylist2 1 2 3 4 5 6 7
(integer) 7
127.0.0.1:6379> LRANGE mylist2 0 -1
1) "7"
2) "6"
3) "5"
4) "4"
5) "3"
6) "2"
7) "1"
127.0.0.1:6379> RPOP mylist2 3
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> LRANGE mylist2 0 -1
1) "7"
2) "6"
3) "5"
4) "4"
在列表的元素前或者后插入元素
127.0.0.1:6379> LRANGE mylist2 0 -1
1) "7"
2) "6"
3) "5"
4) "4"
127.0.0.1:6379> LINSERT mylist2 before 5 5.5
(integer) 5
127.0.0.1:6379> LRANGE mylist2 0 -1
1) "7"
2) "6"
3) "5.5"
4) "5"
5) "4"
LPUSH:将一个或多个值插入到列表头部
LPUSHX:将一个值插入到已存在的列表头部,前提是列表已经存在
127.0.0.1:6379> LPUSH mylist3 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379> LPUSH mylist3 7 8 9
(integer) 9
127.0.0.1:6379> LRANGE mylist3 0 -1
1) "9"
2) "8"
3) "7"
4) "6"
5) "5"
6) "4"
7) "3"
8) "2"
9) "1"
127.0.0.1:6379> lpushx mylist3 10 11 12
(integer) 12
127.0.0.1:6379> LRANGE mylist3 0 -1
1) "12"
2) "11"
3) "10"
4) "9"
5) "8"
6) "7"
7) "6"
8) "5"
9) "4"
10) "3"
11) "2"
12) "1"
获取列表长度
127.0.0.1:6379> Llen mylist3
(integer) 12
通过索引获取列表中的元素,下表获取元素
127.0.0.1:6379> LINDEX mylist3 2
"10"
127.0.0.1:6379> LINDEX mylist3 5
"7"
通过索引设置列表元素的值
127.0.0.1:6379> Lset mylist3 5 77
OK
127.0.0.1:6379> LINDEX mylist3 5
"77"
移除列表元素
127.0.0.1:6379> LREM mylist3 1 77
(integer) 1
127.0.0.1:6379> LINDEX mylist3 5
"5"
127.0.0.1:6379> LRANGE mylist3 0 -1
1) "12"
2) "11"
3) "10"
4) "9"
5) "8"
6) "5"
7) "4"
8) "3"
9) "2"
10) "1"
这里的6被我前面测试的时候删掉了,并不是测试移除失败
对一个列表进行修剪,就是让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
127.0.0.1:6379> LRANGE mylist3 0 -1
1) "12"
2) "11"
3) "10"
4) "9"
5) "8"
6) "5"
7) "4"
8) "3"
9) "2"
10) "1"
127.0.0.1:6379> LTRIM mylist3 5 9
OK
127.0.0.1:6379> LRANGE mylist3 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
127.0.0.1:6379> LPUSH mylist4 1 2
(integer) 2
127.0.0.1:6379> BLPOP mylist4 10
1) "mylist4"
2) "2"
127.0.0.1:6379> BLPOP mylist4 10
1) "mylist4"
2) "1"
127.0.0.1:6379> BLPOP mylist4 10
(nil)
(10.00s)
移除列表的最后一个元素,并将该元素添加到另一个列表并返回
127.0.0.1:6379> LPUSH slist 1 2 3
(integer) 3
127.0.0.1:6379> RPOPLPUSH slist dlist
"1"
127.0.0.1:6379> LRANGE dlist 0 -1
1) "1"
从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它;如果列表没有元素会阻塞列表直到等待超时或发现可lpu弹出元素为止
新加一个列表
127.0.0.1:6379> LPUSH slist2 1 2 3
(integer) 3
127.0.0.1:6379> BRPOPLPUSH slist2 dlist2 0
"1"
127.0.0.1:6379> BRPOPLPUSH slist2 dlist2 0
"2"
127.0.0.1:6379> BRPOPLPUSH slist2 dlist2 0
"3"
让源列表的元素都出队加入到目标列表中
127.0.0.1:6379> BRPOPLPUSH slist2 dlist2 0
"4"
(20.67s)
此时阻塞了20多秒
127.0.0.1:6379> Lpush slist2 4
(integer) 1
阻塞期间插入数据
阻塞和非阻塞的区别(抛个锚点,将会单独写一篇文章学习这个内容)