您的位置:首页 > 数据库 > Redis

redis的使用总结

2017-11-07 21:37 253 查看
数据库redis使用

优点

使用方法

redis的简单类型
String字符串
注意一个键最大能存储512MB

哈希

list列表

set集合
注意

redis安全

可以通过以下命令查看是否设置了密码验证

用python实现链接数据库
redis-connect

redis密码破解

redis使用设置数据添加数据

redis查看服务器配置插入值

追加数据

setget

数据导出
dumprdb 这个即为导出的数据库

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

数据库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 1000      (0,1000 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 *
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: