Ejemplo n.º 1
0
    def get(self, request, redis_id):
        redis_obj = RedisConf.objects.get(id=redis_id)
        cl, cur_server_index, cur_db_index = get_cl(redis_name=redis_obj.name,
                                                    db_id=0)
        cl.bgsave()

        return HttpResponseRedirect(reverse("index"))
Ejemplo n.º 2
0
    def get(self, request):
        client_id = request.GET.get('client_id', None)
        if client_id is not None:
            redis_obj = RedisConf.objects.get(id=client_id)
            status = check_redis_connect(name=redis_obj.name)
            if status is True:
                client, cur_server_index, cur_db_index = get_cl(
                    redis_name=redis_obj.name)
                client_list = client.client_list()
                "分页"
                limit = int(request.GET.get('limit', 30))
                page = int(request.GET.get('page', 1))
                max_num = limit * page
                min_num = max_num - limit

                data = {
                    'code': 0,
                    'msg': '',
                    'count': len(client_list),
                    'data': client_list[min_num:max_num]
                }
        else:
            data = {'code': 1, 'msg': 'Error, 请联系系统管理员!', 'data': ''}

        return JsonResponse(data, safe=False)
Ejemplo n.º 3
0
    def get(self, request, redis_name, value_db_id, key):
        from public.redis_api import get_cl
        from public.data_view import get_value
        logs.info('get value: redis_name={0}, db={1}, key={2}'.format(
            redis_name, value_db_id, key))
        cl = get_cl(redis_name, int(value_db_id))
        value_dict = {'code': 0, 'msg': '', 'data': ''}
        if cl.exists(key):
            value = ''
            if request.GET.get("type", None) == 'ttl':
                value = cl.ttl(key)
                if value is None:
                    value = -1
                logs.info(
                    'get key ttl: redis_name={0}, db={1}, key={2}, ttl={3}'.
                    format(redis_name, value_db_id, key, value))
            else:
                try:
                    value = get_value(key, int(value_db_id), cl)
                except Exception as e:
                    logs.error(
                        'get value is error: redis_name:{0}, key:{1}, db:{2}, cl:{3}, error_info:{4}'
                        .format(redis_name, key, value_db_id, cl, e))
                    value_dict['code'] = 1
            value_dict['data'] = value
        else:
            logs.warning(
                'key is not exists: redis_name={0}, db={1}, key={2}'.format(
                    redis_name, value_db_id, key))
            value_dict['code'] = 1

        return JsonResponse(value_dict, safe=False)
Ejemplo n.º 4
0
 def get(self, request):
     # print request.META["HTTP_REFERER"]
     servers = get_redis_conf(name=None, user=request.user)
     data = []
     for ser in servers:
         try:
             redis_obj = RedisConf.objects.get(id=ser.redis)
         except ObjectDoesNotExist:
             continue
         status = check_redis_connect(name=redis_obj.name)
         if status is True:
             client, cur_server_index, cur_db_index = get_cl(
                 redis_name=redis_obj.name)
             info_dict = client.info()
             time_local = time.localtime(info_dict['rdb_last_save_time'])
             dt = time.strftime("%Y-%m-%d %H:%M:%S", time_local)
             info_dict['rdb_last_save_time'] = dt
             info_dict['socket'] = redis_obj.socket
             # info_dict.update(host=client.connection_pool.connection_kwargs['host'])
             info_dict.update(redis_id=ser.redis)
             data.append(info_dict)
     return render(request, 'index.html', {
         'data': data,
         'console': 'console',
     })
Ejemplo n.º 5
0
 def get_info(self, redis_obj):
     status = check_redis_connect(name=redis_obj.name)
     if status is True:
         client = get_cl(redis_name=redis_obj.name)
         info_dict = get_redis_info(cl=client, number=1)
         time_local = time.localtime(info_dict['rdb_last_save_time'])
         dt = time.strftime("%Y-%m-%d %H:%M:%S", time_local)
         info_dict['rdb_last_save_time'] = dt
         info_dict.update(host=redis_obj.host)
         info_dict.update(redis_id=redis_obj.id)
         return info_dict
     return False
Ejemplo n.º 6
0
 def post(self, request):
     data = {"code": 0, "msg": "successful", "data": ""}
     redis_name = request.POST.get("redis_name", None)
     db_id = request.POST.get("db_id", None)
     try:
         cl = get_cl(redis_name=redis_name, db_id=db_id)
         cl.flushdb()
     except Exception as e:
         logs.error(e)
         data["code"] = 1
         data["msg"] = "failed"
     return JsonResponse(data=data, safe=False)
Ejemplo n.º 7
0
 def post(self, request, redis_name, value_db_id, key):
     """
     修改TTL
     """
     from public.redis_api import get_cl
     cl = get_cl(redis_name, int(value_db_id))
     value_dict = {'code': 0, 'msg': '', 'data': ''}
     ttl = request.POST.get("ttl", None)
     if cl.exists(key) and ttl:
         try:
             cl.expire(key, ttl)
             value_dict['msg'] = "修改成功"
         except Exception as e:
             logs.error(e)
             value_dict['msg'] = '修改失败,请联系管理员'
     return JsonResponse(value_dict)
Ejemplo n.º 8
0
    def get(self, request, redis_name, db_id):
        from public.redis_api import get_cl, get_all_keys_tree

        values = []
        "搜索"
        search_name = request.GET.get('key[id]', None)
        "分页"
        limit = int(request.GET.get('limit', 30))
        page = int(request.GET.get('page', 1))
        max_num = limit * page
        min_num = max_num - limit

        cl = get_cl(redis_name, int(db_id))
        if search_name is not None:
            keys = get_all_keys_tree(client=cl,
                                     key=search_name,
                                     cursor=0,
                                     min_num=min_num,
                                     max_num=max_num)
        else:
            keys = get_all_keys_tree(client=cl,
                                     cursor=0,
                                     min_num=min_num,
                                     max_num=max_num)
        for key in keys:
            values.append({'key': key})

        db_key_num = cl.dbsize()
        if isinstance(db_key_num, dict):
            all_keys = 0
            for k, v in db_key_num.items():
                all_keys = all_keys + v
            db_key_num = all_keys / 2
        batch_key_num = scan_batch
        if batch_key_num > db_key_num:
            key_num = db_key_num
        else:
            key_num = batch_key_num
        key_value_dict = {
            'code': 0,
            'msg': '',
            'count': key_num,
            'data': values
        }

        return JsonResponse(key_value_dict, safe=False)
Ejemplo n.º 9
0
 def post(self, request):
     return JsonResponse({
         "code": 1,
         "msg": "this operation not allow!",
         "data": ""
     })
     data = {"code": 0, "msg": "successful", "data": ""}
     redis_name = request.POST.get("redis_name", None)
     db_id = request.POST.get("db_id", None)
     try:
         cl, cur_server_index, cur_db_index = get_cl(redis_name=redis_name,
                                                     db_id=db_id)
         cl.flushdb()
     except Exception as e:
         logs.error(e)
         data["code"] = 1
         data["msg"] = "failed"
     return JsonResponse(data=data, safe=False)
Ejemplo n.º 10
0
    def get(self, request, redis_name, edit_db_id):
        from public.redis_api import get_cl
        from public.data_view import get_value
        cl = get_cl(redis_name, int(edit_db_id))
        key = request.GET.get('key', None)
        if cl.exists(key):
            value = get_value(key, int(edit_db_id), cl)
            if cl.type(key) == 'list':
                value_list = []
                num = 0
                for i in value['value']:
                    value_dict = {str(num): i}
                    num += 1
                    value_list.append(value_dict)
                value['value'] = value_list

        return render(
            request, 'edit.html', {
                'db_num': 'db' + str(edit_db_id),
                'redis_name': redis_name,
                'data': value,
            })
Ejemplo n.º 11
0
 def post(self, request, redis_name, value_db_id):
     """
     修改TTL
     """
     from public.redis_api import get_cl
     cl = get_cl(redis_name, int(value_db_id))
     value_dict = {'code': 0, 'msg': '', 'data': ''}
     key = request.POST.get('key', None)
     ttl = request.POST.get("ttl", None)
     if cl.exists(key) and ttl != None:
         try:
             if long(ttl) < 0:
                 cl.persist(key)
             else:
                 cl.expire(key, ttl)
             logs.info(
                 'change key tll: redis_name={0}, db={1}, key={2}, ttl={3}'.
                 format(redis_name, value_db_id, key, ttl))
             value_dict['msg'] = "修改成功"
         except Exception as e:
             logs.error(e)
             value_dict['msg'] = '修改失败,请联系管理员'
     return JsonResponse(value_dict)
Ejemplo n.º 12
0
    def get(self, request, redis_name, value_db_id, key):
        from public.redis_api import get_cl
        from public.data_view import get_value
        cl, cur_server_index, cur_db_index = get_cl(redis_name,
                                                    int(value_db_id))
        value_dict = {'code': 0, 'msg': '', 'data': ''}
        if cl.exists(key):
            value = ''
            if request.GET.get("type", None) == 'ttl':
                value = cl.ttl(key)
                if value is None:
                    value = -1
            else:
                try:
                    value = get_value(key, cur_server_index, cur_db_index, cl)
                except Exception as e:
                    logs.error(e)
                    value_dict['code'] = 1
            value_dict['data'] = value
        else:
            value_dict['code'] = 1

        return JsonResponse(value_dict, safe=False)
Ejemplo n.º 13
0
    def post(self, request):
        from public.data_change import ChangeData
        from loginfo.models import OperationInfo
        from public.redis_api import get_cl
        from public.data_view import get_value

        redis_name = request.POST.get('redis_name', None)
        db_id = request.POST.get('db_id', None)
        key = request.POST.get('key', None)

        cl = get_cl(redis_name, int(db_id))
        old_data = get_value(key, int(db_id), cl)
        db = OperationInfo(
            username=request.user.username,
            server=redis_name,
            db=db_id,
            key=key,
            old_value=old_data,
            type='del',
        )
        db.save()

        if key:
            ch_data = ChangeData(redis_name=redis_name, db_id=db_id)

            if ch_data.delete_key(key=key):
                data = {
                    'code': 0,
                    'msg': 'KEY: ' + key + ' is Success',
                    'data': ''
                }
                return JsonResponse(data)

        data = {'code': 1, 'msg': 'KEY: ' + key + ' is Failed', 'data': ''}

        return JsonResponse(data)
Ejemplo n.º 14
0
    def get(self, request):
        client_id = request.GET.get('client_id', None)
        if client_id is not None:
            redis_obj = RedisConf.objects.get(id=client_id)
            status = check_redis_connect(name=redis_obj.name)
            if status is True:
                client = get_cl(redis_name=redis_obj.name)
                client_list = client.client_list()
                client_list_flat = []
                if redis_obj.type == 1:  #cluster
                    if client_list.has_key(redis_obj.host + ':' +
                                           str(redis_obj.port)):
                        for subclient in client_list.get(redis_obj.host + ':' +
                                                         str(redis_obj.port)):
                            client_list_flat.append(subclient)
                    else:
                        for clientone in client_list.values():
                            for subclient in clientone:
                                client_list_flat.append(subclient)
                else:  #single node
                    client_list_flat = client_list
                "分页"
                limit = int(request.GET.get('limit', 30))
                page = int(request.GET.get('page', 1))
                max_num = limit * page
                min_num = max_num - limit
                data = {
                    'code': 0,
                    'msg': '',
                    'count': len(client_list_flat),
                    'data': client_list_flat[min_num:max_num]
                }
        else:
            data = {'code': 1, 'msg': 'Error, 请联系系统管理员!', 'data': ''}

        return JsonResponse(data, safe=False)
Ejemplo n.º 15
0
 def __init__(self, redis_name=None, db_id=None):
     self.redis_name = redis_name
     self.db_id = db_id
     self.cl = get_cl(redis_name=self.redis_name, db_id=self.db_id)
Ejemplo n.º 16
0
    def post(self, request, redis_name, edit_db_id):
        from public.data_change import ChangeData
        from public.redis_api import get_cl
        from public.data_view import get_value
        from loginfo.models import OperationInfo

        cl = get_cl(redis_name, int(edit_db_id))
        ch_data = ChangeData(redis_name=redis_name, db_id=edit_db_id)

        key = request.GET.get('key', None)
        post_key_type = request.POST.get('Type', None)
        old_data = get_value(key, int(edit_db_id), cl)

        if post_key_type == 'string':
            post_value = request.POST.get('value', None)
            ch_data.edit_value(key=key, value=None, new=post_value, score=None)
        elif post_key_type == 'zset':
            score = request.POST.get('Score', None)
            value = request.POST.get('Value', None)
            old_value = request.POST.get('Old_Value', None)
            ch_data.edit_value(key=key,
                               value=old_value,
                               new=value,
                               score=score)
        elif post_key_type == 'set':
            value = request.POST.get('Value', None)
            old_value = request.POST.get('Old_Value', None)
            ch_data.edit_value(key=key, value=old_value, new=value, score=None)
        elif post_key_type == 'hash':
            value_key = request.POST.get('Key', None)
            value = request.POST.get('Value', None)
            ch_data.edit_value(key=key, value=value_key, new=value, score=None)
        elif post_key_type == 'list':
            index = request.POST.get('Index', None)
            value = request.POST.get('Value', None)
            ch_data.edit_value(key=key, value=index, new=value, score=None)

        data = get_value(key, int(edit_db_id), cl)
        if cl.type(key) == 'list':
            value_list = []
            num = 0
            for i in data['value']:
                value_dict = {str(num): i}
                num += 1
                value_list.append(value_dict)
            data['value'] = value_list

        db = OperationInfo(
            username=request.user.username,
            server=redis_name,
            db='db' + edit_db_id,
            key=key,
            old_value=old_data,
            value=data,
            type='edit',
        )
        db.save()

        return render(
            request, 'edit.html', {
                'db_num': 'db' + str(edit_db_id),
                'redis_name': redis_name,
                'data': data
            })
Ejemplo n.º 17
0
 def __init__(self, redis_name=None, db_id=None):
     self.redis_name = redis_name
     self.db_id = db_id
     self.cl, self.cur_server_index, self.cur_db_index = get_cl(
         redis_name=self.redis_name, db_id=self.db_id)
Ejemplo n.º 18
0
    def get(self, request, redis_name, value_db_id):
        from public.redis_api import get_cl
        from public.data_view import get_value
        key = request.GET.get('key', None)
        logs.info('get value: redis_name={0}, db={1}, key={2}'.format(
            redis_name, value_db_id, key))
        cl = get_cl(redis_name, int(value_db_id))
        value_dict = {'code': 0, 'msg': '', 'data': ''}
        keyobj = None
        isCmd = False
        try:
            keyobj = json.loads(key)
            if keyobj.has_key('cmd'):
                isCmd = True
        except Exception as e:
            pass
        finally:
            pass
        if isCmd:
            cmdList = keyobj.get('cmd').split()
            cmdList[0] = cmdList[0].upper()
            logs.info('execute: cmd={0}'.format(" ".join(cmdList)))
            try:
                res = cl.execute_command(*cmdList)
            except Exception as e:
                res = str(e)
            logs.info('execute response={0}'.format(res))
            if isinstance(res, basestring):
                res = res.replace("\r\n", "\n").strip("\n").split("\n")
            resinfo = {
                "db": int(value_db_id),
                "key": " ".join(cmdList),
                "value": json.dumps(res),
                "ttl": -1,
                "type": "string"
            }
            #{'$response':res}
            #{"encoding":"","db":0,"value":"aa","key":"a a","ttl":-1,"type":"string","size":2}
            value_dict['data'] = resinfo
            return JsonResponse(value_dict, safe=False)
        if cl.exists(key):
            value = {}
            if request.GET.get("type", None) == 'ttl':
                ttl = cl.ttl(key)
                if ttl is None:
                    ttl = -1
                logs.info(
                    'get key ttl: redis_name={0}, db={1}, key={2}, ttl={3}'.
                    format(redis_name, value_db_id, key, ttl))
                value = {
                    "db": value_db_id,
                    "key": key,
                    "value": ttl,
                    "ttl": ttl,
                    "type": "long"
                }
            else:
                try:
                    value = get_value(key, int(value_db_id), cl)
                except Exception as e:
                    logs.error(
                        'get value is error: redis_name:{0}, key:{1}, db:{2}, cl:{3}, error_info:{4}'
                        .format(redis_name, key, value_db_id, cl, e))
                    value_dict['code'] = 1
            if value.has_key('value'):
                value['value'] = json.dumps(value.get('value'))
            value_dict['data'] = value
        else:
            logs.warning(
                'key is not exists: redis_name={0}, db={1}, key={2}'.format(
                    redis_name, value_db_id, key))
            value_dict['code'] = 1

        return JsonResponse(value_dict, safe=False)