redis是一种基于键值对的nosql数据库,与很多键值对数据库不同,redis中的值string,hash,list,set,zset,geo
等多种数据机构和算法组成,因为redis会将所有的数据都放在内存中,所以他的读写性能非常惊人,不仅如此,redis还可以将内存中的数据利用快照和日志的形式保存在硬盘上,redis还提供了键过期,发布订阅,流水线等附加功能
redis所有的数据都存放在内存中 redis使用c语言实现 redis使用单线程架构
5中数据结构:字符串,哈希,列表,集合,有序集合
提供了键过期功能,可以实现缓存 提供了发布订阅功能,可以实现消息系统 提供了pipeline功能,客户端可以将一批命令一次性传到redis,减少了网络开销
源码很少,3.0版本以后5万行左右. 使用单线程模型法,是的redis服务端处理模型变得简单. 不依赖操作系统的中的类库
java,php,python,c,c++,nodejs等
rdb和aof
哨兵 集群
缓存session会话 缓存用户信息,找不到再去mysql查,查到然后回写到redis
热度排名排行榜 发布时间排行榜
帖子浏览数 视频播放次数 商品浏览数
踩/赞,粉丝,共同好友/喜好,推送,打标签
配合elk实现日志收集
/data/soft/ #redis下载目录 /opt/redis_{port}/{conf,logs,pid} #redis安装目录 /data/redis_{port}/redis_{port}.rdb #redis数据目录 /root/scripts/redis_shell.sh #redis运维脚本
### 编辑hosts文件 [root@db01 ~]# tail -3 /etc/hosts 10.0.0.51 db01 10.0.0.52 db02 10.0.0.53 db03 ### yum install gcc -y #make distclean && make mkdir -p /data/soft mkdir -p /data/redis_6379 mkdir -p /opt/redis_6379/{conf,pid,logs} cd /data/soft/ wget http://download.redis.io/releases/redis-3.2.9.tar.gz tar zxf redis-3.2.9.tar.gz -c /opt/ ln -s /opt/redis-3.2.9/ /opt/redis cd /opt/redis make && make install
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.pid logfile /opt/redis_6379/logs/redis_6379.log ### 设置数据库的数量,默认数据库为0 databases 16 ### 指定本地持久化文件的文件名,默认是dump.rdb dbfilename redis_6379.rdb ### 本地数据库的目录 dir /data/redis_6379 eof
redis-server /opt/redis_6379/conf/redis_6379.conf
ps -ef|grep redis netstat -lntup|grep redis
redis-cli
0.写入key set k1 v1 set k2 v2 set k3 v3 1.查看所有的key!线上禁止使用! keys * 2.查看有多少个key,注意,是估值 dbsize 3.查看是否存在这个key exists k1 exists k1 k2 k3 状态码: 0 表示这个key不存在 1 表示这个key存在 n 表示有的n个key存在 4.删除key(无论是什么数据类型,都可以删除) del k1 del k1 k2 k3 状态码: 0 表示这个key不存在 1 表示这个key存在,并且删除成功 n 表示有的n个key存在,并且删除n个key 5.键过期 设置过期时间 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的数据仅保存在内存中,服务器重启后,数据将丢失.)
操作命令:
1.设置一个key set k1 v1 2.查看一个key get k1 3.设置多个key mset k1 v1 k2 v2 k3 v3 4.查看多个key mget k1 k2 k3 5.天然计数器 加1: set k1 1 incr k1 get 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 c rpush list1 d 查看列表的长度: llen list1 查看列表的内容: db01:6379> lrange list1 0 -1 1) "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 28 hmset user:2 name abc job it age 28 hmset user:3 name def job it age 28 查看hash里的一个值 hmget user:1 name 查看hash里的多个值 hmget user:1 name age job 查看hash里的所有的值 hgetall user:1 mysql数据和redis哈希对比: user表 uid name job age 1 xiaozhang it 28 2 xiaoya it 28 3 yazhang it 28 mysql查询数据 select * from user where id = 3 redis缓存mysql数据 名字 key1 k1值 key2 k2的值 key3 k3的值 uid:1 name xiaozahng job it age 28 uid:2 name xiaoya job it age 28 uid:3 name yazahng job it age 28
创建集合 db01:6379> sadd set1 1 2 3 (integer) 3 db01:6379> sadd set2 1 3 5 7 (integer) 4 查看集合的成员: db01:6379> smembers set1 1) "1" 2) "2" 3) "3" db01:6379> smembers set2 1) "1" 2) "3" 3) "5" 4) "7" db01:6379> srem set1 2 4 (integer) 2 db01:6379> smembers set1 1) "1" 2) "3" 查看集合的差集,以前面一个集合为基准对比后面的,前面有,后面没有则选出来 db01:6379> sdiff set1 set2 1) "2" db01:6379> sdiff set2 set1 1) "7" 查看集合的交集 db01:6379> sinter set1 set2 1) "1" 2) "3" 3) "5" 查看集合的并集 db01:6379> sunion set1 set2 1) "1" 2) "2" 3) "3" 4) "5" 5) "7" db01:6379> sunion set1 set2 set3 1) "1" 2) "2" 3) "3" 4) "5" 5) "7" 6) "9"
zadd key score member [score member] zadd linux5 100 banzhang zadd linux5 99 xuewei 10 zuzhang 150 mage 计算成员个数 zcard linux5 计算某个成员分数 zscore key member zscore linux5 banzhang 计算成员排名 zrank key member zrevrank key member 升序排行 zrank linux5 xuewei 降序排行 zrevrank linux5 xuewei 删除成员 zrem key member zrem user:ranking oldzhang 增加成员分数 zincrby key increment member zincrby linux5 1 xuewei 返回指定排名范围的成员 升序 zrang key start end [wishscores] 降序 zrevrange key start end [wishscores] 127.0.0.1:6379> zrange linux5 0 -1 withscores 1) "c" 2) "10" 3) "b" 4) "99" 5) "a" 6) "100" 7) "d" 8) "150" 127.0.0.1:6379> zrevrange linux5 0 -1 withscores 1) "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 withscores zrevrangebyscore linux5 200 99 withscores 返回指定分数范围成员个数 zount key min max zcount linux5 100 200
cat >/lib/systemd/system/redis.service <<eof [unit] description=redis after=network.target [service] type=forking execstart=/usr/local/bin/redis-server /opt/redis_6379/conf/redis_6379.conf --daemonize yes execstop=/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 shutdown privatetmp=true [install] wantedby=multi-user.target eof
如对本文有疑问, 点击进行留言回复!!
修复 Mac brew 安装 mongodb 报 Error: No available formula with the name ‘mongodb’ 问题详解
MongoDB中数据的替换方法实现类Replace()函数功能详解
网友评论