Linux下数据库学习过程之Redis数据库的数据类型(持续更新中)

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
阻塞期间插入数据

阻塞和非阻塞的区别(抛个锚点,将会单独写一篇文章学习这个内容)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值