redis初识

redis介绍

redis是什么

redis是一种基于键值对的NOsql数据库,与很多键值对数据库不同,redis中的值string,hash,list,set,zset,geo等多种数据机构和算法组成,因为redis会将所有的数据都放在内存中,所以他的读写性能非常惊人,不仅如此,redis还可以将内存中的数据利用快照和日志的形式保存在硬盘上,redis还提供了键过期,发布订阅,流水线等附加功能

redis重要性

1.速度快

Redis所有的数据都存放在内存中Redis使用C语言实现Redis使用单线程架构

2.基于键值对的数据结构服务器

5中数据结构:字符串,哈希,列表,集合,有序集合

3.丰富的功能

提供了键过期功能,可以实现缓存提供了发布订阅功能,可以实现消息系统提供了pipeline功能,客户端可以将一批命令一次性传到Redis,减少了网络开销

4.简单稳定

源码很少,3.0版本以后5万行左右.使用单线程模型法,是的Redis服务端处理模型变得简单.不依赖操作系统的中的类库

5.客户端语言多

java,PHP,python,C,C++,Nodejs等

6.持久化

RDB和AOF

7.主从复制

8.高可用和分布式

哨兵集群

redis应用场景

1.缓存-键过期时间

缓存session会话缓存用户信息,找不到再去mysql查,查到然后回写到redis

2.排行榜-列表&有序集合

热度排名排行榜发布时间排行榜

3.计数器应用-天然支持计数器

帖子浏览数视频播放次数商品浏览数

4.社交网络-集合

踩/赞,粉丝,共同好友/喜好,推送,打标签

5.消息队列系统-发布订阅

配合elk实现日志收集

redis单节点安装部署

1.目录规划

/data/soft/#redis下载目录/opt/redis_{PORT}/{conf,logs,pid}#redis安装目录/data/redis_{PORT}/redis_{PORT}.rdb#redis数据目录/root/scripts/redis_shell.sh#redis运维脚本

2.安装命令

### 编辑hosts文件[root@db01 ~]# tail -3 /etc/hosts10.0.0.51 db01    10.0.0.52 db02    10.0.0.53 db03###yum install gcc -y#make distclean  && makemkdir -p /data/softmkdir -p /data/redis_6379mkdir -p /opt/redis_6379/{conf,pid,logs}cd /data/soft/wget http://download.redis.io/releases/redis-3.2.9.tar.gztar zxf redis-3.2.9.tar.gz -C /opt/ln -s /opt/redis-3.2.9/ /opt/rediscd /opt/redismake && make install

3.配置文件

cat >/opt/redis_6379/conf/redis_6379.conf <<EOF### 以守护进程模式启动daemonize yes### 绑定的主机地址bind 127.0.0.1 10.0.0.51 ### 监听端口port 6379### pid文件和log文件的保存地址pidfile /opt/redis_6379/pid/redis_6379.pidlogfile /opt/redis_6379/logs/redis_6379.log### 设置数据库的数量,默认数据库为0databases 16### 指定本地持久化文件的文件名,默认是dump.rdbdbfilename redis_6379.rdb### 本地数据库的目录dir /data/redis_6379EOF

4.启动redis

redis-server /opt/redis_6379/conf/redis_6379.conf

5.检查是否启动

ps -ef|grep redisnetstat -lntup|grep redis

6.进入redis

redis-cli

redis全局操作命令

0.写入keyset k1 v1set k2 v2set k3 v31.查看所有的key!线上禁止使用!keys *2.查看有多少个key,注意,是估值DBSIZE3.查看是否存在这个KEYEXISTS k1EXISTS k1 k2 k3 状态码:0表示这个key不存在1表示这个key存在N 表示有的N个key存在4.删除key(无论是什么数据类型,都可以删除)DEL k1DEL k1 k2 k3状态码:0表示这个key不存在1表示这个key存在,并且删除成功N 表示有的N个key存在,并且删除N个Key5.键过期设置过期时间EXPIRE k1 100取消过期时间,不修改key原来的值PERSIST k1状态码:0: 表示这个key不存在1: 表示这个key存在,并且设置过期时间成功查看key是否过期TTL k1状态码:-1 :这个key存在,并且永不过期-2 :这个key不存在N  :这个key存在,并且在N秒后过期结论:过期后的key直接会被删除6.键的数据类型type key

字符串操作

Redis并不是简单地key-value存储,实际上他是一个数据结构服务器,支持不同类型的值.
Redis Strings
这是最简单的Redis类型,如果你只用这种类型,Redis就像一个持久化的memcache服务器(注:memcache的数据仅保存在内存中,服务器重启后,数据将丢失.)
操作命令:

  • 通常用SET command 和 GET command来设置和获取字符串值
  • INCR命令将字符串值解析成整型.将其加1,最后结果保存为新的字符串,类似命令: INCRBY,DECR,DECRBY
  • MSET和MGET可以一次存储或获取多个key对应的值.
  • EXISTS命令返回1或0标识给定key的值是否存在.
    使用DEL命令可以删除key对应的值,
    DEL命令返回1或0标识是被删除(值存在)或者没被删除(key对应的值不存在).
  • Type命令可以返回key对应的存储类型
  • 可以对key设置一个超时时间,当这个时间到达后被删除
  • PERSIST命令去除超时时间
1.设置一个keyset k1 v1 2.查看一个keyget k1 3.设置多个keyMSET k1 v1 k2 v2 k3 v34.查看多个keyMGET k1 k2 k35.天然计数器加1:set k1 1INCR k1get k1 加N:INCRBY k1 100减N:INCRBY k1 -1 减N:INCRBY k1 -N

列表

插入列表:LPUSH:从列表左侧插入数据RPUSH:从列表右侧插入数据最后LRANGE可以从list中取出一定范围的元素Pop,从list中删除元素并同时返回删除的值,可以在左边或右边操作.LPUSH list1 A LPUSH list1 B LPUSH list1 CRPUSH list1 D 查看列表的长度:LLEN list1查看列表的内容:db01:6379> LRANGE list1 0 -11) "C"2) "B"3) "A"4) "D"删除列表元素:LPOP: 从列表左侧删除RPOP: 从列表右侧删除LPOP list1 RPOP list1删除列表内容:DEL list1

哈希

Hash看起来就像一个hash的样子.由键值对组成HMSET指令设置hash中的多个域HGET取回单个域.HMGET取回一系列的值生成一个hash类型:HMSET user:1 name xiaozhang job it age 28HMSET user:2 name abc job it age 28HMSET user:3 name def job it age 28查看hash里的一个值HMGET user:1 name查看hash里的多个值HMGET user:1 name age job查看hash里的所有的值HGETALL user:1mysql数据和redis哈希对比:user表uid  name  job  age 1 xiaozhang  it   28 2 xiaoya  it   28 3 yazhang  it   28 mysql查询数据select * from user where id = 3redis缓存mysql数据名字  key1 k1值 key2 k2的值 key3 k3的值uid:1 name xiaozahng job it age 28uid:2 name xiaoya job it age 28uid:3 name yazahng job it age 28

集合

  • 集合是字符串的无序排列
  • SADD指令把新的元素添加到set中
  • 和list类型不同,set集合不允许出现重复的元素
  • srem用来删除指定的值
  • sdiff计算后者集合的差异成员
  • sinter计算集合的交集
  • sunion计算集合的并集
创建集合db01:6379> SADD set1 1 2 3(integer) 3db01:6379> SADD set2 1 3 5 7(integer) 4查看集合的成员:db01:6379> SMEMBERS set11) "1"2) "2"3) "3"db01:6379> SMEMBERS set21) "1"2) "3"3) "5"4) "7"db01:6379> srem set1 2 4(integer) 2db01:6379> smembers set11) "1"2) "3"查看集合的差集,以前面一个集合为基准对比后面的,前面有,后面没有则选出来db01:6379> SDIFF set1 set21) "2"db01:6379> SDIFF set2 set11) "7"查看集合的交集db01:6379> SINTER set1 set21) "1"2) "3"3) "5"查看集合的并集db01:6379> SUNION set1 set21) "1"2) "2"3) "3"4) "5"5) "7"db01:6379> SUNION set1 set2 set31) "1"2) "2"3) "3"4) "5"5) "7"6) "9"

有序集合添加成员

zadd key score member [score member]zadd linux5 100 banzhangzadd linux5 99  xuewei 10 zuzhang 150 mage 计算成员个数zcard linux5计算某个成员分数zscore key member zscore linux5 banzhang 计算成员排名zrank key memberzrevrank key member升序排行 zrank linux5 xuewei降序排行 zrevrank linux5 xuewei删除成员zrem key memberzrem user:ranking oldzhang增加成员分数zincrby key increment memberzincrby linux5 1 xuewei 返回指定排名范围的成员升序 zrang   key start end [wishscores]   降序 zrevrange key start end [wishscores]127.0.0.1:6379> ZRANGE linux5 0 -1 withscores1) "c"2) "10"3) "b"4) "99"5) "a"6) "100"7) "d"8) "150"127.0.0.1:6379> ZREVRANGE linux5 0 -1 withscores1) "d"2) "150"3) "a"4) "100"5) "b"6) "99"7) "c"8) "10"返回指定分数范围的成员zrangebyscore  key min max [wishscores] [limit offect count]zrevrangebyscore key max min [wishscores] [limit offect count]zrangebyscore   linux5 100 200 withscoresZREVRANGEBYSCORE  linux5 200 99 withscores返回指定分数范围成员个数zount key min max zcount linux5 100 200 

systemd管理redis

cat >/lib/systemd/system/redis.service <<EOF[Unit]Description=RedisAfter=network.target[Service]Type=forkingExecStart=/usr/local/bin/redis-server /opt/redis_6379/conf/redis_6379.conf --daemonize yesExecStop=/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 shutdownPrivateTmp=true[Install]WantedBy=multi-user.targetEOF
(0)

相关推荐

  • 3、Redis-数据类型详解(string,list,set,sort set,hash)

    Redis数据类型-string string为最简单的类型,与Memcached一样的类型,一个key对应一个value,其支持的操作与Memcached的操作类似,它的功能更丰富.设置可以存二进制 ...

  • Redis核心数据结构与高性能原理

    作者公众号:一角钱技术(org_yijiaoqian) 五种常用数据结构 String 结构 字符串常用操作 SET key value  //存入字符串键值对MSET key value [key  ...

  • Redis介绍和如何使用

    Redis的介绍及使用 redis 简介 简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向. ...

  • Redis学习笔记:Redis简介

    一.NoSQL和关系型数据库区别 NoSQL非关系型数据库:Redis.MongoDB.HBase等,基于Key-Value存储,采用命令操作. 关系型数据库:Oracle.MySQL.DB2.SQL ...

  • Redis 数据结构

    一.Redis简介 Redis是一款基于key-value的高性能NoSQL数据库,开源免费,遵守BSD协议.支持string(字符串) . hash(哈希) .list(列表) . set(集合) ...

  • Redis分布式锁升级版RedLock及SpringBoot实现

    分布式锁概览 在多线程的环境下,为了保证一个代码块在同一时间只能由一个线程访问,Java中我们一般可以使用synchronized语法和ReetrantLock去保证,这实际上是本地锁的方式.但是现在 ...

  • 初识宜兴紫砂陶优势(桑黎兵、朱霞琴)

    "茗注者,莫妙于砂:壶精者,莫过于阳羡."明代杰出戏曲小说家李渔如是所云.这并非空穴来风. 中国历来就是茶的民族,茶道深入寻常百姓之家随处可见,而宜兴紫砂陶天生特有的"宜 ...

  • 【蒙以养正】初识古人的儿歌-第1集《小儿语》节要

    传统育儿经 1篇原创内容 公众号 初识古人的儿歌-第1集| 開吉法師主講 2019/12/21 视频学习: 课程全文: <小兒語>這部書,我們先來了解一下它的作者.它的作者是呂得勝,呂得勝 ...

  • 为什么Redis集群要使用反向代理?

    为什么要使用反向代理? 如果没有反向代理,一台Redis可能需要跟很多个客户端连接: 看着是不是很慌?看没关系,主要是连接需要消耗线程资源,没有代理的话,Redis要将很大一部分的资源用在与客户端建立 ...

  • 如何在Centos下快速安装redis

    如何在Centos下快速安装redis 什么是redis? Redis是现在最受欢迎的NoSQL数据库之一,Redis是一个使用ANSI C编写的开源.包含多种数据结构.支持网络.基于内存.可选持久性 ...

  • redis哨兵模式

    上一篇我们说了redis的主从配置,我们也配置了一个主节点和两个从节点,主节点中写入的数据会自动同步到从节点中 但是这种方式有个缺陷,就是当主节点挂了,整个redis服务就不能用了,需要人为的去重启或 ...

  • Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

    七月份,Redis之父Salvatore Sanfilippo在自己的博客上发布了一则公告,宣告自己退出了Redis维护者行列,正式成为一位二线"谋士". Redis 之父 Sal ...

  • 太极拳五行合一功,让人初识前进、后退、左顾、右盼、中定

    五行合一功,是根据古传<太极拳释名>一文:「前进.后退.左顾.右盼.中定」的论述编创的,乃心性太极拳(心性太极拳功道)--心性太极学之太极功体系中的入门功夫.属太极拳基本功范畴,适合太极拳 ...

  • 队前教育|你好,少先队——初识“六知六会一做”

    队前第一课 少先队"六知六会一做"的知识 六知 1 知道少先队的队名 中国少年先锋队(简称"少先队")是中国少年儿童的群众组织,是少年儿童学习中国特色社会主义和 ...