redis 入门以及实例

Posted zolty

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis 入门以及实例相关的知识,希望对你有一定的参考价值。

1.常用命令

安装redis:
sudo apt install redis-server 

安装redis-tools:
sudo apt install redis-tools 

连接:
redis-cli -p 6379 

测试:
redis-benchmark -h localhost -p 6379 -c 100 -n 100000

切换数据库:
Select 3

数据库空间:
dbsize

Set:
Set name zolty

Get:
Get name

查看所有key:
Keys *

清空当前库:
Flushdb

清空所有库:
Flushall

是否存在key:
Exists name

转移到库1:
Move name 1

设置过期时间:
Expire name 10

查看剩余时间:
Ttl name

查看key类型:
Type name

String追加:
Append key1 "hello"

String获取长度:
Strlen key1

增加1:
Incr key1

减少1:
Decr key1

指定增量:
Incrby keys 10

指定减量:
Decrby keys 10

指定截取:
Getrange key1 0 3

指定替换:
Setrange key1 1 xx

设置30秒后过期:
Setex key3 30 "hello"

不存在创建:
Setnx mykey "REDIS"

设置多个值:
Mset k1 v2 k2 v2 k3 v3

获取多个值:
Mget k1 k2 k3

原子操作,要么一起成功,要么一起失败:
Msetnx k1 v1 k5 v5


#对象
设置一个user:1对象,值为json字符来保存一个对象
Set user:1 name:zhangsan,age:3 


Mset user:1:name zhangsan user:1:age 2
Mget user1:name user1:age

先get再set:
Getset db redis


==========LIST============
用list可以实现栈,队列

插入三条数据:
Lpush list one
Lpush list two
Lpush list three

获取全部list:
Lrange list 0 -1 ->  three two one

插入到队列最右侧:
Rpush listr right

左边移除:
Lpop list
右边移除:
Rpop list

2.python redis

#安装redis lib
pip install redis 

在list中插入一个元素,通过lpush rpop 实现队列功能。

import redis

data = "CLST001,zolty,31.1000099,121.6549484"

r = redis.Redis(host='localhost', port=6379, decode_responses=True)  
r.lpush('OBUList',data) # insert data to OBUList 
print(r.llen('OBUList')) # print OBUList's len   : 1
print(r.type('OBUList')) # print OBUList's type  : list
print(r.lrange('OBUList',0,1)) # print OBUList's first object : "CLST001,zolty,31.1000099,121.6549484"
r.lpop('OBUList') # pop the first object
print("======")
print(r.llen('OBUList')) # print OBUList's len after poping  : 1
print(r.type('OBUList')) # print OBUList's first object after poping  : nil

3.局域网连接redis

vi etc/redis/redis.conf

注释掉绑定localhost
#bind 127.0.0.1:1
关闭保护模式
protected mode no
#添加防火墙安全规则
sudo firewall-cmd --zone=public --add-port=6379/tcp --permanent
#重启防火墙
systemctl restart firewalld.service

4.局域网连接测试

import redis   # 导入redis 模块

r = redis.Redis(host='192.168.8.254', port=6379, decode_responses=True)
r.set('name', 'runoob')  # 设置 name 对应的值
print(r['name'])
print(r.get('name'))  # 取出键 name 对应的值
print(type(r.get('name')))  # 查看类型

5.在线调试

https://www.freeaihub.com/redis/setup.html
依次点击 运行 ,运行这3条指令,即可开始测试。

6.综合实例

利用python脚本,生成600个点插入redis 取名为mo的list,该post请求平均耗时10ms,mysql平均耗时30ms。

import redis   # 导入redis 模块

r = redis.Redis(host='192.168.8.254', port=6379, decode_responses=True)
lon = 1211763490
lat = 312807289
for i in range(1, 600):
    v = str(i) + "," + str(lat+i*100) + "," + str(lon+i*100)
    print(v)
    r.lpush("mo",v)
    # 1, 312807389, 1211763590
    # 2, 312807489, 1211763690
    # 3, 312807589, 1211763790
    # 4, 312807689, 1211763890
    # 5, 312807789, 1211763990
    # 6, 312807889, 1211764090
    # 7, 312807989, 1211764190
    # 8, 312808089, 1211764290
    # 9, 312808189, 1211764390
    # 10, 312808289, 1211764490
    # 11, 312808389, 1211764590
    # 12, 312808489, 1211764690
    # .........................

java导入 jedis.js
读取mo的list,按逗号分割,存入二维数组

@RequiresPermissions("system:lmonitor:redisList")
@PostMapping("/redisList")
@ResponseBody
public Long[][] getMonitor(LstMonitor lstMonitor)

    //连接本地的 Redis 服务
    Jedis jedis = new Jedis("192.168.8.254");
    System.out.println("连接成功");
    // 获取存储的数据并输出
    List<String> list = jedis.lrange("mo", 0 ,-1);
    int length = list.size();
    Long [][] arrayMonitor = new Long[3][length];
    for(int i=0; i<list.size(); i++) 
        String[] arrays = list.get(i).replace("\\"","").split(",");
        arrayMonitor[0][i] = Long.valueOf(arrays[0]);
        arrayMonitor[1][i] = Long.valueOf(arrays[1]);
        arrayMonitor[2][i] = Long.valueOf(arrays[2]);
    
    return arrayMonitor;

利用echart.js,绘制600个点至HTML

<script th:inline="javascript">
    var mapList =[];
    var prefix = ctx + "system/lmonitor";
    $.ajax(
        url: prefix + "/redisList",
        async: false,
        type: 'POST',
        dataType: 'json',
        data : null,
        success: function (data)
            arrayMonitor = eval(data)
        
    );
    var map = new BMap.Map('container');  // 创建地图实例
    var center = new BMap.Point(121.18720385246547,31.28460823015341);  // 设置中心点
    map.centerAndZoom(center, 100);  // 初始化地图, 设置中心点坐标和地图级别
    map.enableScrollWheelZoom(true);  //启用滚轮放大缩小,默认禁用
    map.enableKeyboard(true);  //启用键盘操作,默认禁用。
    map.enableDragging();  //启用地图拖拽,默认启用
    map.enableDoubleClickZoom();  //启用双击放大,默认启用
    map.addControl(new BMap.NavigationControl());  //平移缩放控件
    map.addControl(new BMap.ScaleControl());  //比例尺控件
    var markers = new Array();
    var contents = new Array();
    var points = new Array();
    var infos = new Array();
    var infoWindows = new Array();
    for (var i = 0; i < 80; i++) 
        var resolution = 10000000;
        var longitude = arrayMonitor[2][i] / resolution;
        var latitude = arrayMonitor[1][i]/ resolution;
        var devId = arrayMonitor[0][i];
        var opt = width: 200, height: 100, title: "背景OBU";  // 创建信息窗口
        points[i] = wgs2bd(latitude,longitude);
        //points[i] = new BMap.Point(longitude,latitude);
        markers[i] = new BMap.Marker(points[i]);
        map.addOverlay(markers[i]);
        infos [i] = "<font color='#f10'>设备ID:" + devId + "</font><br>经度:" + longitude + "<br>纬度:" + latitude;
        infoWindows [i] = new BMap.InfoWindow(infos[i], opt);
        mark_point(infoWindows[i],points[i]);
    ;
    function mark_point(infoWindow,point)
        markers[i].addEventListener('click', function()
            this.openInfoWindow(infoWindow,point);
        );
    ;
</script>

参考文献

菜鸟教程
【狂神说Java】Redis最新超详细版教程通俗易懂

以上是关于redis 入门以及实例的主要内容,如果未能解决你的问题,请参考以下文章

Redis入门实例

Redis入门

Java 之SpringData Redis快速入门 以及( Redis快速入门安装和使用)

Java 之SpringData Redis快速入门 以及( Redis快速入门安装和使用)

redis简单入门以及redis连接池

Redis Lua脚本的详细介绍以及使用入门