zoukankan      html  css  js  c++  java
  • Redis的浅入门

    Redis的浅入门
    # 缓存的思想

    问题提出:我们的用户数量上亿,如果登录,访问数据库user特别耗时,该怎么办?——提出缓存

    方法:怎样从缓存在获取数据?

    *有数据:
    		直接返回
    *无数据:
    		(1)从数据库查询
    		(2)将数据放入缓存
    		(3)返回数据
    

    认识redis

    特点:-属于NOSQL,数据之间没有关联关系,数据存储在内存。
    对比一下关系型数据库(MYSQL..)数据之间有关联,数据存储在硬盘的文件上。

    数据结构-[key,value]

    • key - 字符串
    • value - 5种不同

    value数据结构:

    • 字符串类型 String
    • 哈希类型 hash
    • 列表类型 list
    • 集合类型 set
    • 有序集合类型 sortedset

    五种数据结构命令

    https://www.redis.net.cn/ 可以看一个学习redis的中文网

    1. 字符串类型 string
    		1. 存储: set key value
    
    		2. 获取: get key
    
    		3. 删除: del key
    
    2. 哈希类型 hash
    		1. 存储: hset key field value
    
    		2. 获取: 
    			* hget key field: 获取指定的field对应的值
    
    			* hgetall key:获取所有的field和value
    
    				
    		3. 删除: hdel key field
    	
    3. 列表类型 list:可以添加一个元素到列表的头部(左边)或者尾部(右边)
    		1. 添加:
    			1. lpush key value: 将元素加入列表左表
    				
    			2. rpush key value:将元素加入列表右边
    
    		2. 获取:
    			* lrange key start end :范围获取
    
    		3. 删除:
    			* lpop key: 删除列表最左边的元素,并将元素返回
    			* rpop key: 删除列表最右边的元素,并将元素返回
    			
    4. 集合类型 set : 不允许重复元素
    		1. 存储:sadd key value
    
    		2. 获取:smembers key:获取set集合中所有元素
    
    		3. 删除:srem key value:删除set集合中的某个元素	
    
    5. 有序集合类型 sortedset:不允许重复元素,且元素有顺序.每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
    
    		1. 存储:zadd key score value
    
    		2. 获取:zrange key start end [withscores]  (start:0,end:-1)
    
    		3. 删除:zrem key value
    
    6. 通用命令
    		1. keys * : 查询所有的键
    		
    		2. type key : 获取键对应的value的类型
    		
    		3. del key:删除指定的key value
    

    持久化

    问题提出:redis服务器重启后,或电脑重启,我们的数据会丢失,怎么办?

    持久化出现:将redis内存中的数据持久化保存到硬盘的文件中。

    机制:

    • RDB:默认情况,检测key的变化情况来持久化数据

    这里我们通过修改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
    

    修改完成后重启redis服务器,并制定配置文件名称

    到目录,通过命令行方式运行-redis-server.exe redis-windows.conf

    • AOF:日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据

    还是修改redis.windows.conf文件

    appendonly no(关闭AOF) ---> yes(开启AOF)
    
    # appendfsync always :每一次操作都进行持久化
    appendfsync everysec :每隔一秒就行一次持久化
    # appendfsync no : 不进行持久化
    

    Jedis

    简要说就是一款java操作redis数据库的工具。

    在操作前要打开redis服务器端,今天打开的时候遇到了一些问题:

    QForkMasterInit: system error caught. error code=0x000005af, message=VirtualAllocEx failed.: unknow

    翻译过来就是:没有设置redis的最大内存

    解决办法:

    在redis的配置文件即redis.wiondows.conf(我的是windows64版本)中加入maxmemory和maxheap配置(加在最最后即可)

    maxmemory 268435456
    maxheap 314572800

    用cmd启动,成功!记得一定要加上配置文件

    redis-server.exe redis.windows.conf


    Jedis使用方法和redis几乎一样,这里只是一次浅入的认识,后期有更深入再介绍。

    最后强调一句:

    使用redis缓存一些不经常发生变化的数据。数据库的数据一旦发生改变,则需要更新缓存。

  • 相关阅读:
    linux之awk命令
    HDU 2097 Sky数 进制转换
    HDU 2077 汉诺塔IV
    HDU 2094 产生冠军 dfs加map容器
    HDU 2073 叠框
    HDU 2083 简易版之最短距离
    HDU 2063 过山车 二分匹配
    天梯 1014 装箱问题
    天梯 1214 线段覆盖
    天梯 1098 均分纸牌
  • 原文地址:https://www.cnblogs.com/wangzheming35/p/11990614.html
Copyright © 2011-2022 走看看