02.redis

Redis

Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,大概3w行代码,官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s,且Redis通过提供多种键值数据类型来适应不同场景下的存储需求。默认端口为6379

一、介绍及安装

1.Redis介绍


关系型和非关系型数据库比较.png

redis存储的是:key,value格式的数据,其中key都是字符串,value有5中不同的数据结构

  1. 目前为止Redis支持的键值数据类型如下:
    1. 字符类型string
    2. 哈希类型hash:map格式,又可以存键值对
    3. 列表类型list:linkedList格式,支持重复元素
    4. 集合类型set:不允许重复元素
    5. 有序集合类型sortedset:不允许重复元素,且元素有顺序

redis存储的数据结构.png
  1. Redis的应用场景
    1. 缓存【重要】(数据查询、短连接、新闻内容、商品内容等等)
    2. 聊天室 的在线好友列表
    3. 任务队列。(秒杀、抢购、12306等等)
    4. 应用排行榜
    5. 网站访问统计
    6. 数据过期处理(可以精确到毫秒)
    7. 分布式集群架构中的session分离(比如用nginx做反向代理,tomcat服务器做集群这种架构环境下用户信息管理的问题!)

2.Redis下载安装配置

1.下载安装

  1. 官网:https://redis.io
  2. 中文网:http://www.redis.net 需要其他命令可以查看官网的文档
  3. 解压即可使用:配置文件如下:
    1. redis.windows.conf: 配置文件
    2. redis-cli.exe: redis的客户端
    3. redis-server.exe: redis服务器端

2.制作系统服务

个人电脑建议需要的时候就开启

# 后续补充

二、命令操作

  • 补充:其他命令
    • clear: 清空控制台
    • exit: 退出客服端

实际运营中,让Redis独占一台服务器的内存资源,提升性能!

可以查看官网的api自行学习www.redis.net.cn

1.redis的数据结构

key都是字符串,value有5中类型

  1. string: 字符串
  2. hash(map): value内部也是key:value结构
  3. list(linkedList) :链表, 双端队列
  4. set:无序集合
  5. sortedset:有序集合,制定score进行排序
以下操作需要打开服务器和终端:依次双击redis-server.exeredis-cli.exe

2.字符串类型 string

1.存储:set key value

127.0.0.1:6379> set username zhangsan
OK

2.获取: get key

127.0.0.1:6379> get username
"zhangsan"

3.删除: del key

127.0.0.1:6379> del username
(integer) 1

3.哈希类型hash

1. 存储:hset key field value

127.0.0.1:6379> hset myhash username lisi
(integer) 1

127.0.0.1:6379> hset myhash password 123
(integer) 1

2. 获取:

  1. hget key field: 获取指定的field对应的值
127.0.0.1:6379> hget myhash username
"lisi"
  1. hgetall field: 获取所有的field和value
127.0.0.1:6379> hgetall myhash
1) "username"
2) "lisi"
3) "password"
4) "123"

3. 删除: hdel key field

127.0.0.1:6379> hdel myhash username
(integer) 1

4.列表类型 list:【linkedList,相当于双端队列】

1. 添加

可以添加一个元素到列表的头部(左边)或者尾部(右边)

  1. lpush key value: 将元素加入列表左边
127.0.0.1:6379> lpush myList a
(integer) 1
127.0.0.1:6379> lpush myList b
(integer) 2

127.0.0.1:6379> lpush myList c d e
(integer) 3
  1. rpush key value: 将元素加入列表右边
127.0.0.1:6379> rpush myList c
(integer) 3

2.获取

  • lrange key startIndex endIndex: 范围获取【endIndex=-1表示全获取】
127.0.0.1:6379> lrange myList 0 -1
1) "b"
2) "a"
3) "c"

注意:lrange 是 list range的意思,不是 left range

3.删除

  1. lpop key:删除列表最左边的元素,并将元素返回;
127.0.0.1:6379> lpop myList
"b"
  1. rpop keyl:删除列表最右边的元素,并将元素返回;
127.0.0.1:6379> rpop myList
"c"

5.集合类型 set: 不允许重复元素

1.存储 sadd key value

127.0.0.1:6379> sadd myset a
(integer) 1
127.0.0.1:6379> sadd myset a
(integer) 0

127.0.0.1:6379> sadd myset c d d
(integer) 2

2.获取 smembers key: 获取set集合中所有的元素

127.0.0.1:6379> smembers myset
1) "a"

3.删除:srem key value:删除set集合中的某个元素

127.0.0.1:6379> srem myset a
(integer) 1

6.有序集合类型 sertdset【相当于优先队列】

不允许重复元素,且元素有顺序.每个元素都会关联一个double类型的分数score。redis正是通过分时类为集合中的成员进行从先到大的排序。

1.存储zadd key score value

127.0.0.1:6379> zadd mysort 60 zhangsan
(integer) 1
127.0.0.1:6379> zadd mysort 50 lisi
(integer) 1
127.0.0.1:6379> zadd mysort 80 wangwu
(integer) 1

2.获取zrange key start end [withscores]

  1. zrange key start end
127.0.0.1:6379> zrange mysort 0 -1
1) "lisi"
2) "zhangsan"
3) "wangwu"
  1. zrange key start end withscores
127.0.0.1:6379> zrange mysort 0 -1 withscores
1) "lisi"
2) "50"
3) "zhangsan"
4) "60"
5) "wangwu"
6) "80"

3.删除:zrem key value

127.0.0.1:6379> zrem mysort lisi
(integer) 1

7.通用命令

  1. keys *: 查询所有的键【支持正则表达式】
127.0.0.1:6379> keys *
1) "category"  # 估计是系统提供的测试数据
2) "mysort"
  1. type key: 获取键对应的value类型
127.0.0.1:6379> type mysort
zset
  1. del key:删除指定的key:value
127.0.0.1:6379> del mysort
(integer) 1

三、持久化

redis是一个内存数据库,当redis服务器重启,或者电脑重启,数据会丢失,可以将redis内存中的数据持久化保存到硬盘的文件中。redis提供两种持久化机制RDBAOF

1.RDB 默认方式

默认方式,不需要进行配置,在一定的间隔时间中,检测key的变化情况,然后持久化数据(直接将内存数据持久化)

  1. 编辑 redis.windows.conf 文件
# after 900 sec (15 min) if at least 1 key changed
save 900 1
# after 300 sec (5 min) if at least 10 keys changed
save 300 10
# after 60 sec if at least 10000 keys changed
save 60 10000
  1. 重启redis服务器,并指定配置文件名称【以命令行的方式启动服务端
C:\redis_2.8.9> redis-server.exe redis.windows.conf

持久化的文件后缀名为.rdb;可以调用save方法进行持久化;bgsave 是后台开了一个线程进行备份!

2.AOF 日志记录方式

可以记录每一条命令的操作。可以每一次命令操作后,持久化数据

  1. 编辑 redis.windows.conf 文件
appendonly no(关闭aof) --> appendonly yes(开启aof)

# appendfsync always : 每一次操作都进行持久化
appendfsync everysec : 每隔一秒进行一次持久化
# appendfsync no : 不进行持久化

持久化的文件后缀名.aof;启动方式如上

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容

  • Ubuntu下安装redis 安装redis 在 Ubuntu 系统安装 Redi 可以使用以下命令: 启动 Re...
    riverstation阅读 926评论 0 0
  • 1 Redis介绍1.1 什么是NoSql为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方...
    克鲁德李阅读 5,286评论 0 36
  • Redis是啥 Redis是一个开源的key-value存储系统,由于拥有丰富的数据结构,又被其作者戏称为数据结构...
    一凡呀阅读 1,173评论 0 5
  • 本文为笔者对在学习Redis过程中所收集资料的一个总结,目的是为了以后方便回顾相关的知识,大部分为非原创内容。特此...
    EakonZhao阅读 14,425评论 0 9
  • 昨天晚上回来以后,吃饱了饭就开始做作业,数学作业一会就完成了,可是等到做语文作业的时候就不是那么回事了,背诵课文很...
    二年级二班阅读 160评论 0 0