1,redis也有数据库的概念,一个数据库中可以保存一组数据;
2,各个数据库之间是相互隔离的,当然也可以在不同数据库之间复制数据;
3,一般一个应用会单独使用一个数据库;
4,每一个数据库都有一个id号,默认的数据库id为0;
5,可以使用select命令选择当前使用的数据库:
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> select hello
nil
6,redis初始化的时候会默认创建16个数据库(这个配置可以在redis配置文件中databases 16);
7,特别注意,类似redis的key-value数据库系统,是绝对没有表的概念,可以简单理解为,所有的数据都是乱七八糟的堆在一起的;
Command
1.redis中提供了非常大量的命令来方便的操作数据库中的数据;
2.redis的命令可以简单理解为mysql的SQL命令;
3,redis命令分为
1,对数据的操作;
2,发布/订阅相关操作;
3,事务控制;
4,脚本命令;
5,连接服务器命令;
6,数据库服务相关命令;
Key-Value
1,key用来标记一个数据;一般在key中需要尽量标明数据的名字,比如用于标示一个对象的时候,可以使用user:1000来作为key,代表id为1000的用户对象;
2,value表示一个key对应的值;在redis中,数据可以是任何内容,redis把所有的value都作为byte数组处理;所以可以用来保存任何内容;
例子:向redis中存储一个json字符串:
set user:1 '{"id":1,"name":"stef","age":18}'
获得这个值:
get user:1
3,redis最突出的特点是提供了5种常用的数据存储类型(value的类型),深刻理解这5中数据结构和各自的使用场景,对redis的使用有很大帮助;
Query
1,在redis中,不支持对value进行任何形式的查询;
例如,保存一个user:
set user:1 '{name:"hello",id:1}'
是无法通过redis去查询name为hello的user;要查询的内容,只能反映在key值上,所以如果要按照用户的name查询,只能再添加一条数据:
set user:name:stef 1
2,redis不是一个适用于任何场景的存储方案,考虑使用redis需要对业务进行考评,用redis的思想去重新设计数据结构;
存储
1,redis可以作为内存数据库,也可以把数据持久化到磁盘上;
2,默认情况下,redis每60秒/1000key数据修改或者15分钟/9个以下key修改;
在redis配置文件中:
save 900 1
save 300 10
save 60 10000
3,数据默认存储在安装目录下.rdb文件中(可以在配置文件中dbfilename dump.rdb配置);
4,redis也可以设置为append模式,每次key的修改都会append到文件中,这种方式有可能丢失60秒的数据;
1,通过配置:appendonly yes开启
2,appendfilename "appendonly.aof"设置append文件;
3,可以设置append的模式(类似于mysql的事务文件同步机制):
# appendfsync always:每次更新key及时同步到append文件;
appendfsync everysec:每一秒同步一次key的更新;
# appendfsync no:不管理append文件的更新,根据操作系统去定
存储
1,redis可以作为内存数据库,也可以把数据持久化到磁盘上;
2,默认情况下,redis每60秒/1000key数据修改或者15分钟/9个以下key修改;
在redis配置文件中:
save 900 1
save 300 10
save 60 10000
3,数据默认存储在安装目录下.rdb文件中(可以在配置文件中dbfilename dump.rdb配置);
4,redis也可以设置为append模式,每次key的修改都会append到文件中,这种方式有可能丢失60秒的数据;
1,通过配置:appendonly yes开启
2,appendfilename "appendonly.aof"设置append文件;
3,可以设置append的模式(类似于mysql的事务文件同步机制):
# appendfsync always:每次更新key及时同步到append文件;
appendfsync everysec:每一秒同步一次key的更新;
# appendfsync no:不管理append文件的更新,根据操作系统去定
网友评论