redis的使用总结_redis.redis(host='127.0.0.1', port=6379)-程序员宅基地

技术标签: redis  

数据库redis使用

优点

字典的加强版 操作很方便 操作具有原子性  

使用方法

解压绿色版之后,需要在黑窗口中进入到解压的绿色版当中,执行

> redis-server.exe redis.windows.conf 

一个是服务,一个是配置。紧接着执行

> redis-cli.exe -h 127.0.0.1 -p 6379    

这个时候就可以对数据库进行操作了;

set helloworld 19
get helloworld
config get *    获取所有配置信息
config get loglevel  获取日志
config set loglevel "notice"

redis的简单类型

string(字符串)
hash(哈希)
list(列表)
set(集合)
zset(有序集合)

String(字符串)

与memcached一模一样的类型。一个key对应一个value

redis 127.0.0.1:6379> SET name "runoob"
OK
redis 127.0.0.1:6379> GET name
"runoob"
注意:一个键最大能存储512MB。

哈希

一个键名对应一个集合
hash特别适合存储对象。

127.0.0.1:6379> HMSET user:1 username runoob password runoob points 200
OK
127.0.0.1:6379> HGETALL user:1
1) "username"
2) "runoob"
3) "password"
4) "runoob"
5) "points"
6) "200"

list(列表)

Redis的列表是简单的字符串列表,可以添加一个元素到列表的头部或者尾部。

redis 127.0.0.1:6379> lpush runoob redis
(integer) 1
redis 127.0.0.1:6379> lpush runoob mongodb
(integer) 2
redis 127.0.0.1:6379> lpush runoob rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange runoob 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379>

set(集合)

Redis的set是string类型的无序集合。集合是通过哈希表实现的,添加删除查找的复杂度都是O(1)

redis 127.0.0.1:6379> sadd runoob redis
(integer) 1
redis 127.0.0.1:6379> sadd runoob mongodb
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers runoob
1) "rabitmq"
2) "mongodb"
3) "redis"
注意

以上实例中 rabitmq 添加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略。
集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。

zset(sorted set:有序集合)
也是string类型元素的集合,且不允许重复的成员

redis 127.0.0.1:6379> zadd runoob 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE runoob 0 100001000 score )
1) "redis"
2) "mongodb"
3) "rabitmq"

redis安全

为了安全起见,这里应该设置密码。

可以通过以下命令查看是否设置了密码验证:
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) ""

如果为空,就无需通过密码验证就可以连接到 redis 服务。下面设置密码

127.0.0.1:6379> config set requirepass "123456"
OK
127.0.0.1:6379> auth 123456
OK

用python实现链接数据库

redis-connect

import redis
try:
    myredis=redis.StrictRedis(host="127.0.0.1", port=6379, db=0, password="123456")
    myredis.set("isOK","密码正确")
    print(myredis.get("isOK").decode("utf-8"))
except:
    print("密码错误")

redis密码破解

import redis
def  check(password):
    try:
        myredis=redis.StrictRedis(host="127.0.0.1",port=6379,db=0,password=password)
        myredis.set("isOK","密码正确")
        print(myredis.get("isOK").decode("utf-8"))
        return True
    except:
        print("密码错误")
        return False


path=r"Z:\F\qqAnd163Password.txt"
passfile=open(path,"rb")
while True:
    line=passfile.readline()
    if not line:
        break
    line=line.decode("utf-8")
    linelist=line.split(" # ")
    password=   linelist[0]
    if  check(password):
        break

passfile.close()

redis使用设置数据,添加数据。

import redis
myredis = redis.StrictRedis(host="127.0.0.1", port=6379, db=0, password="565656")
print(myredis.exists("abcabxc"))
myredis.set("abcabc",1)
myredis.incr("abcabc")
myredis.incr("abcabc")
print(myredis.exists("abcabc"))
print(myredis.get("abcabc"))
# 把txt文件批量读入到redis里面
myredis = redis.StrictRedis(host="127.0.0.1", port=6379, db=0, password="565656")
filepath=r"C:\Users\Tsinghua-yincheng\Desktop\YinchengDay1_last\csdn.txt"
csdnfile=open(filepath,"rb")
while True:
    line =csdnfile.readline()
    if not line:
        break
    line=line.decode("gbk",errors="ignore")
    linelist=line.split(" # ")
    password=linelist[1]
    if  myredis.exists(password): #存在,+1.不存在创建,默认次数1
        myredis.incr(password)
    else:
        myredis.set(password, 1)

redis查看服务器配置,插入值。

import redis
myredis=redis.Redis(host="127.0.0.1",port=6379,password="123456")
print(myredis.info()) #redis服务器信息
for  key  in  myredis.info():
    print(key,myredis.info()[key])
print(myredis.dbsize()) #数据库大小
print(myredis.ping()) #服务器活着
myredis.hset("csdn1","user","111111a")
myredis.hset("csdn1","pass","111111b")
myredis.hset("csdn1","email","111111c")
print(myredis.hgetall("csdn1"))
print(myredis.hkeys('csdn1'))

追加数据

import redis
myredis=redis.Redis(host="127.0.0.1",port=6379,password="123456")

# myredis.lpush("sjb","lijunteng","sunqing","huangdazheng",'123')
#myredis.lpush("sjb","yincheng")#追加
# myredis.lset("sjb",0,"1") #设置
myredis.lrem("sjb","1",0) #删除
print(myredis.lrange("sjb",0,10),1)
#集合,不允许重复
myredis.sadd("mvp","a","b","c")
print(myredis.smembers("mvp"))
print(myredis.scard("mvp"))

myredis.zadd("mvp1","100",3,"23",1,"1322",2) #整数用于排序
print(myredis.zcard("mvp1"))
print(myredis.zrange("mvp1",0,10,desc=True))#排序

set,get

import redis
myredis=redis.Redis(host="127.0.0.1",port=6379,password="123456")
mypipe=myredis.pipeline() #批量执行
mypipe.set("huangdazheng1","1321321")
mypipe.get("huangdazheng1")
mypipe.set("huangdazheng2","1321321a")
mypipe.get("huangdazheng2")
mypipe.execute()
#抓取,
print(myredis.get("huangdazheng1"))
print(myredis.get("huangdazheng2"))

数据导出

直接执行save命令即可
在配置文件夹下面会有这样一个文件。

dump.rdb 这个即为导出的数据库。

把rdb文件导出。

import redis
myredis=redis.Redis(host="127.0.0.1",port=6379)
elements=myredis.keys("*")
print(elements)
filepath=r"1.txt"
csdnfile=open(filepath,"w")
for i in elements:
    csdnfile.write(i.decode("utf-8")+"\n")
csdnfile.close()

可以通过命令行直接导出key。

redis-cli key *
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/funnyPython/article/details/78472863

智能推荐

java汉诺塔暂停_玩一下java,顺便写了下汉诺塔问题,两种方法实现。-程序员宅基地

文章浏览阅读63次。1publicclassHanoi_X8023Z{2///3///将n个盘从one座借助two座,移动到three座.4///5///盘子个数6///第一个标识座A7///第二个标识座B8///第三个标识座C9voidhanoi(intn,Stringone,Stringtwo,Stringthree)10{11if(n==1)12{13move(...

linux 搜索FC存储设备,Linux FC-SAN存储搭建-程序员宅基地

文章浏览阅读2.8k次。配置:OS:Centos7.4FC-HBA:16Gb Qlogical QLE2692光纤卡服务器:IBM X3650一、查看FC HBA 卡的port name假如没有fc_host,加载qla2xxx 板块驱动,假如没有tcm_qla2xxx驱动,需要重新编译内核加载cat /sys/class/fc_host/host*/port_name0x10000090fa2a6b980x100000..._fc_host

前端----check的取值和回显赋值等.........._在前端进行check-程序员宅基地

文章浏览阅读2.4k次。取值的案例简单自己看 demo1

idea中如何pull多个模块项目_idea 多个git 项目一起拉取 pull-程序员宅基地

文章浏览阅读707次。点击项目VCS-->Update Project 即可将所有模块的代码pull到本地_idea 多个git 项目一起拉取 pull

php 5.4.23,PHP 5.5.7/5.4.23/5.3.28 紧急发布-程序员宅基地

文章浏览阅读68次。PHP 5.5.7/5.4.23/5.3.28紧急发布.2013-12-13.上个版本是2013-11-14的5.5.6/5.4.22。全部修正了一个 OpenSSL的安全漏洞(CVE-2013-6420)5.3本来已停止常规开发也更新了。 总共修正了10几个Bug(包括Opcache的几个Bug)及安全漏洞。完全改进:Version 5.5.712-Dec-2013Core:Fixed bu..._cve-2013-6420

华为Could API人工智能系列——文本合成MP3音频_api-huacloud.net-程序员宅基地

文章浏览阅读3.8k次,点赞61次,收藏41次。华为Could API人工智能系列——文本合成MP3音频_api-huacloud.net

随便推点

android mapbox 添加多个点,android – 如何使用MapBox SDK获取标记的点击事件?-程序员宅基地

文章浏览阅读453次。我使用mapbox sdk提供的名为ItemizedIconOverlay的功能,在mapbox中获得了标记点击事件的解决方案.我做了如下:public void placeGTMarker() {alMarkerGT = new ArrayList();marker = new Marker("my Marker", "", latLng);marker.setMarker(activity.g..._mapbox 点击事件获取当前点 移动端

2020春节 python 爬虫有道词典 心得 (非delete_o 法)_有道翻译不删除_o用request不行了-程序员宅基地

文章浏览阅读612次。首先我找到;_有道翻译不删除_o用request不行了

修复phpcms自带采集无法采集https网站内容_phpcms有的网站不能采集-程序员宅基地

文章浏览阅读2.4k次。无法采集https的网站内容主要是https不支持file_get_contents获取内容,所以可以考虑采用curl的方式获取。(需要开启curl,可以在pathinfo里边查看)(1)打开phpcms\modules\collection\classes\collection.class.php在类里边添加新函数:protected static function curl_requ..._phpcms有的网站不能采集

realsense相机SDK——librealsense使用方法及bug解决(ubuntu)_realsnese相机sdk编译出错-程序员宅基地

文章浏览阅读7.3k次,点赞3次,收藏48次。realsense环境配置参考https://blog.csdn.net/m0_43436602/article/details/110930512一、librealsense在哪里?安装完环境之后,可以去根目录下搜一下librealsense2.so看看,如果是用apt装的librealsense,应该和我的差不多。二、realsense库怎么用?我是apt install ros-kinetic-librealsense2安装的librealsense,故库文件的位置在opt/._realsnese相机sdk编译出错

SM2椭圆曲线公钥密码算法的JAVA实现-程序员宅基地

文章浏览阅读2.3k次,点赞2次,收藏16次。2019独角兽企业重金招聘Python工程师标准>>> ..._java 把sm2公钥的r s, 按照asn1的标准计算

转载UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes in position 1022-1023: unexpected end of data_unicodedecodeerror: 'utf-8' codec can't decode byt-程序员宅基地

文章浏览阅读6.9k次。仅作为记录,大佬请跳过。运行python程序时,出现UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 1022-1023: unexpected end of data解决方案(博主未使用,多次运行就又好了)转载:传送门在开头输入:#!/usr/bin/env Python# coding=utf-8..._unicodedecodeerror: 'utf-8' codec can't decode bytes in position 1022-1023: