redis笔记

nosql 减少io的操作,解决io压力,当缓存使用
not only sql 不仅仅是sql,是非关系数据库,key-value
使用场景
对数据高并发的读写
海量数据的读写
对数据高可拓展性的
不支持复杂逻辑的关系.
redis:支持
mongoDB: 文档行数据库,key-value, value支持json,可替代redis

redis 的操作是原子性的.计数器,秒杀,手机验证码
redis-server 是服务前端启动,不推荐,启动redis-端口号6379
修改 /etc/redis.conf 中的字段daemmonize的值为yes,可以后台启动
启动命令: redis-server /etc/redis.conf  服务端启动
ps -ef | grep redis
redis-cli  通过客户端链接redis
redis-cli shutdown 关闭redis
redis-cli -p 6379 shutdown 指定端口关闭
端口号6379的来源
串行
多线程+锁(memcache的实原理, 支持单一的数据类型)
单线程+多路IO复用(redis的内部实现原理)

3.1 Redis键key的操作

先设置值set k1 lucy, set k2 mary, set k3 jack
keys   查看档期库所有key 
exists k1  判断某个key是否存在
del k2  删除指定key 为k2的数据
type k3 查看key是什么类型
unlink k3  根据value选择非阻塞删除(将keys从keyspace元数据中删除,真正的删除会在后续一部操作)
expire k1 10  表示k1的值10秒后国企
ttl k1 查看k1还有多少秒过期, -1表示永远有效,-2表示已过期

select命令切换数据库

dbsize 查看当前数据库的key的数量
flushdb 清空当前库中的所有key
flushdball 清空所有库中的key

3.2 Redis 字符串String

*NX 当数据库中key 不存在时,可将key-value添加数据库
*XX 当数据库中key 存在时,可将key-value添加数据库,与NX参数互斥
*EX 设置key的超时秒数
*PX 设置key的超时毫秒数,与EX互斥
set 添加值
get 查询key对应的值
apped key value 将给key追加原值的末尾
strlen key 获取key对应只给的长度
setnx key value 只有key不存在时,设置key的值
incr key 对key的值每次加1
decr key 对key的值每次减1
incrby/decrby key 步长 将key中存储的值自增自减步长

原子性操作:不会被线程调度机制打断的操作. 原子性,有一个失败则都失败.

操作一旦开始,就一直运行到结束,中间不会切换到另一个线程.

在单线程中,能够在单挑指令中完成的操作,都可以成为原子操作.(因为终端只能存在于指令之间)
在多线程中,不能被其它进程/线程打断的操作叫原子操作.
redis单命令的原子性主要得益于Redis的单线程.

3.3 Redis 列表 list

底层时双向链表

3.4 Redis 集合 Set

set自动排重(无序不重复) 底层是一个value为null的hash表.所以添加,删除,查找的复杂度都是o(1).

一个算法,随着数据的增加,执行时间的长短,如果是O(1),数据增加,查找数据的时间不变.

3.5 Redis哈希 Hash

Redis hash 是一个string类型的field 和 value的直射表.类似java里的map<String,Object>

3.6 Redis 有序集合 Zset(sorted set)

Zset 有序不重复

set 无序不重复

SortedSet(zset)类似于java里的Map<String,Double>,zset可给每个元素value赋一个权重值score.

zset又类似于TreeSet,内部的元素会按照权重score排序.

zset底层用了两个数据结构:hash+跳跳表

4. Redis 配置文件介绍etc/redis.conf

4.1 units 单位只支持bytes,不支持bit,大小写不敏感.

4.2 includes 包含

4.3 network 网络相关

默认bind=127.0.0.1 只能接受本机的访问请求. 不写bind,不受限制.

生产环境需要写应用服务区的地址;服务器需要远程访问的,需要注释 # bind.

若开启了protected-mode  yes,且bind ip没设密码, redis只允许接受本机的响应.

protected-mode no 支持远程访问.

4.3.3 port 

4.34 tcp-backlog,backlog是一个链接队列总和 = 未完成3次握手的队列+已完成3次握手的队列.

4.35 pidfile redis进程文件详情

4.5 limits  设置最大客户端链接数

5. Redis 的发布和订阅

5.1 消息通信模式:发送者pub 发送消息,订阅者sub接收消息.

6. Redis 新数据类型

6.1 Bitmaps 

6.2 HyperLogLog 页面访问量,基数的计算.

6.3 GEO 地理位置的缩写geographic

7. Jedis操作Redis6

用Java操作redis,是客户端语言.

idea 里的maven 工程,加依赖

修改配置文件etc/redis.conf中的两个值: 注释bind + protected-mode no 支持远程访问 + 重启redis

8. Redis_Jedis 实例

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值