redis数据库的简单使用

目录

一、string

1.1 SET、GET操作

1.2 INCR、DECR、INCRBY、DECRBY操作

1.3 DEL、EXISTS

1.4 EXPIRE、TTL操作

二、list

2.1 RPUSH

2.2 LPUSH

2.3 LRANGE

2.4 LLEEN

2.5 LPOP

2.6 RPOP

三、set

3.1 无序的set

3.1.1 SADD

3.1.2 SREM

3.1.3 SISMEMBER

3.1.4 SMEMBERS

3.1.5 SUNION

3.2 排序的set

3.2.1 ZADD

3.2.2 ZRANGE

四、hashes

4.1 HSET

4.2 HGETALL

五、redis配置

六、Redis发布订阅

七、redis事务

八、redis连接

8.1 命令 AUTH

8.2 命令 PING

九、redis 服务器

9.1 命令 INFO

9.2 命令 CLIENT LIST

十、redis数据备份与恢复

11、redis安全

12、redis性能测试


redis 数据库是个内存数据库,它会存一些类似 c++ 的list、set、map 等数据结构,当然几乎每种语言都会有这些数据结构,然后下面主要讲,如何往这些数据结构中插入数据和获取数据。

我在linux上部署了一个三个哨兵、三个redis的环境,附一个哨兵的标准配置、一个主redis的标准配置和一个备的redis的标准配置:

标准哨兵配置:

port 23700

bind 10.130.41.59

sentinel monitor songbw_master 10.130.41.59 7001 2

sentinel failover-timeout songbw_master 900000

注意配置中的ip 如果 填写成 127.0.0.1,程序可能连不上 redis

 

主 redis 的标准配置

port 7001

bind 10.130.41.59

appendonly yes

dir "/home/songbw/redis_sentinel/7001"

slave-read-only yes

 

备 redis 的标准配置

port 7000

bind 10.130.41.59

appendonly yes

dir "/home/songbw/redis_sentinel/7000"

slave-read-only yes

slaveof 10.130.41.59 7001

这种哨兵模式的大致原理是:

三个哨兵,三个redis ,包括一个主的redis和2个备的redis,哨兵的作用是为了管理数据同步,同时在主的redis宕掉时,备的redis要顶上去等。

 

一、string

1.1 SET、GET操作

设置键值 server:name 的值为  “fido”

通过GET操作,拿到键值 server:name的 vlaue值

1.2 INCR、DECR、INCRBY、DECRBY操作

INCR操作将键中存的值自增1

DECR操作将键中存的值自减1

INCR 和 DECR 就是增1或者减1,但如果想增加或者减少一个特定的值呢?

就用上面的命令,integer 就表示具体要增加或者减少的值

注意:

如果INCR、DECR、INCRBY、DECRBY所跟的键不存在,则会先将键中相应的值置为0,然后再进行自增或自减操作。关键是它们都是原子操作,不会引起数据的不一致性。

1.3 DEL、EXISTS

DEL是删除键及相关的值。

EXISTS 是查看某一个键是否存在,1存在,0不存在

 

1.4 EXPIRE、TTL操作

表示键 resourse:lock将会在120秒后被删除。

过了一会,使用命令:

,可能会得到值100,这表明resourse:lock的存活时间还有100秒。再过了好了一会你又使用命令,返回的值是-2,它表明键resourse:lock已经不存在了。而如果返回的值的值是-1,则表明键将永远不会过期,如下:

 

二、list

它所拥有的操作RPUSH,LPUSH,LLLEN,LRANGE,LPOP,RPOP,注意你可以立即开启一个list,只要这个键之前没有以其它的类型存在。

2.1 RPUSH

将一个新值放在列表的末尾

2.2 LPUSH

将一个新值放在列表的开始

 

2.3 LRANGE

返回list中特定范围的一个集合。它有两个参数,第一个参数是你想获得的第一个元素的索引,第二个参数是你想获得的最后一个元素的索引。如果是’-1’的话,就代表list末尾。

2.4 LLEEN

返回当前的list的长度

2.5 LPOP

移除list的第一个元素并且返回它

2.6 RPOP

移除list的最后一个元素并且返回它

用命令LLEN和LRANGE查看

说明LPOP和RPOP正是我们想表达的意思。

三、set

3.1 无序的set

set是个集合,显然它里面的元素是无序的,且每个元素只能出现一次,它的操作:SADD,SREM,SISMEMBER,SMEMBERS,SUNION

3.1.1 SADD

添加给定的值到集合。

入第一列,是往key superpowers 中添加元素 flight

3.1.2 SREM

从set中移除给定的值

3.1.3 SISMEMBER

检测给定值是否在set中,返回1,说明在,0,不在

3.1.4 SMEMBERS

返回set中所有的成员

3.1.5 SUNION

合并2个或更多的set,并返回所有的元素

3.2 排序的set

由于set中的元素是不排序的,所以对于一些问题,它不能工作的很好,所以提出了sorted set,sorted set 和常规的set是很相似的,不同的是:对于sorted set ,每一个值会关联一个分数值,用来对sorted set 中的元素排序。

3.2.1 ZADD

比如此例子第一行,

第二个字段是key值 hackers

第四个字段是具体的一个hacker ,名字是Alan Kay

第三个字段,是Alan Kay关联的一个分数值,表示其出生年月,是1940年

 

3.2.2 ZRANGE

显然,集合中的元素已经排序过了,而我们取的是索引2到索引4的元素。

四、hashes

hashes是一个map,string字段和string值之间。它可以完美的表达出一个对象,因为一个对象,它就会有学号、性别、年龄等这些字段。

4.1 HSET

HSET是建立一个hashes

user:1000是一个key,然后将name “John Smith” 、 email “john. [email protected] 、 password  “s3cret”存到了键user:1000里面,这不就是c++ 的map吗

4.2 HGETALL

HGETALL:得到hashes中所有的键值对

HMSET:一次性,把所有的键值对都放到hashes中

HGET:得到hashes中某一个字段对应的值

而且在hashes中,也有对数字的值进行原子性加减的操作:

HINCRBY:对hashes中,相应的值原子操作内加一个特定的值。并且和set中相应的操作一样,如果某个字段不存在,先将此字段的值设置为0,然后再进行加减操作。

HDEL:删除hashes中某一个字段值

显然,在hashes中,对于键user:1000,存入 visits 10,然后通过HINCRBY进行加操作,最后当我把 visits删掉后,再增加的话,值就变成了1。

五、redis配置

我们知道每一个redis实例都有一个配置文件redis.conf,不仅可以直接编辑redis.conf文件,还可以连上redis后,通过命令来配置,格式如下:

redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

可以给字段CONFIG_SETTING_NAME设置值NEW_CONFIG_VALUE

例子如下:

redis 127.0.0.1:6379> CONFIG SET loglevel "notice"

OK

还可以通过命令拿到配置的值,格式如下:

redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME

可以得到字段CONFIG_SETTING_NAME的值

例子如下:

redis 127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"

而命令CONFIG GET * 可以得到所有配置项的键值对

redis 127.0.0.1:6379> CONFIG GET *
  1) "dbfilename"
  2) "dump.rdb"
  3) "requirepass"
  4) ""
  5) "masterauth"
  6) ""

六、Redis发布订阅

一个redis实例在运行,然后很多客户端都可以去连接它,而Redis的发布订阅就是为了实现多个客户端之间的通信。

如一个客户端1订阅了redischat通道

客户端2在redischat通道上发布信息

返回值’3’代表有3个客户端订阅了redischat通道

然后客户端1就收到了这条消息

七、redis事务

Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:

A、事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。

B、事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。

由一个例子具体解释:

MULTI代表一个事务的开始,在这之后输入的命令都不会执行,而是放到一个队列里(例子中返回的是QUEUED),等EXEC执行之后,触发事务,这些命令会全部执行,而且它是一个原子操作。

八、redis连接

8.1 命令 AUTH

验证通过后,客户端才能正常与redis通信

8.2 命令 PING

返回值PONG,说明可以和redis服务端进行通信

九、redis 服务器

9.1 命令 INFO

INFO:得到所有关于服务器的统计数据和信息

仅仅是截取了一部分图

9.2 命令 CLIENT LIST

十、redis数据备份与恢复

数据备份:

a、

b、创建 redis 备份文件也可以使用命令 BGSAVE,该命令在后台执行。

查看redis安装目录:

恢复数据:

只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。

11、redis安全

可以给redis服务端设置密码,而密码是在配置文件redis.conf的requirepass字段中存放。

而我的redis服务端设置的密码是songbw_qn。

当然,前面讲过,我们也可以通过CONFIG SET命令来重新设置密码,一旦设置了密码,就需要通过AUTH password命令进行验证,才能正常连接到服务器。

12、redis性能测试

redis性能测试基本命令如下:

选项解释如下:

其中比较常用的是:

-h,-p,-n,-t,-q

图像仅截取了一部分

以上实例中主机为 127.0.0.1,端口号为 7001,请求数为 10000,因为没有用-t命令,所以显示所有命令的执行效率,没有用-q命令,所以显示所有的信息。

以上实例中主机为 127.0.0.1,端口号为 7001,执行的命令为 set,lpush,请求数为 10000,通过 -q 参数让结果只显示每秒执行的请求数。

发布了12 篇原创文章 · 获赞 2 · 访问量 1992

猜你喜欢

转载自blog.csdn.net/weileshenghuo1/article/details/102747391
今日推荐