Memcached
Memcached高性能分布式内存缓存服务器,经常被用来建立缓存项目以此分担来自于传统数据库的。
NoSQL是弱一致性与MySQL要求的一致性不同
文章目录
前言
Memcached主要特点
基于C/S架构,协议简单
基于libevent的事件处理
自主内存存储方式
基于客户端的Memcached分布式
提示:
一、Memcache安装
示例:在Windows下安装大体步骤是:
1、下载解压到本地文件夹
2.查看自己电脑的ip地址
3.启动memcached服务器
C:\memcached>memcached -l 192.168.151.32 -p 11211 -m 256 -vvv
4.启动telnet服务
!平时启用telnet服务需要先在搜索下输入telnet让后启动服务,这个telnet不好用,这会要有用个软件。
1)下载xshell选下图中的第二个,然后自动安装。
2)启动xshell新建一个连接,我已经新建完一个了。
3)写入数据
Connecting to 192.168.151.32:11211...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
ERROR
set k1 0 0 2
99
CLIENT_ERROR bad data chunk
ERROR
set k1 0 0 2
99
STORED
get k1
VALUE k1 0 2
99
END
二、用Python操作memcached
安装有2种方法、命令安装和在界面安装
代码如下(示例):
第一种安装方法:
打开后输入:pip install python-memcached 命令,下图是运行成功截图。
界面安装:
三、浏览器中打开Python操作的memcached
该处使用的url网络请求的数据。
选择Jupyter Notebook,等待在浏览器中打开界面。
打开后的界面
新建python3
先练习服务器操作
import memcache
mc = memcache.Client(['192.168.151.32:11211'],debug = True,cache_cas = True)
mc.set("k1",11)
print(mc.get("k1"))
ret = mc.gets("k2")
print(ret)
input
执行结果:由于长时间没有操作从新启动服务器,而且在xshell中从新设置了k1,但是k2没有设置所以出现下面的情况none
11
None
<bound method Kernel.raw_input of <ipykernel.ipkernel.IPythonKernel object at 0x00000232F80E7FD0>>
连续建立里3个模拟,一个服务器两个客户端
1.#模拟服务器初始化模块,初始化K1
import memcache
mc = memcache.Client(['192.168.151.32:11211'],debug = True,cache_cas = True)
mc.set("k1",0)
ret = mc.get("k1")
print(ret)
执行结果
0
2.#模拟客户端1,入库4个零件
3.#模拟客户端2,入库4个零件
#模拟服务器初始化模块,初始化K1
import memcache
mc = memcache.Client(['192.168.151.105:11211'],debug = True,cache_cas = True)
mc.set("k1",0)
ret = mc.get("k1")
print(ret)
#模拟客户端1,入库4个零件
import memcache
mc = memcache.Client(['192.168.151.105:11211'],debug = True,cache_cas = True)
for x in range(4):
while True:
ret = mc.gets("k1")
ret = ret + 1
input("press any key") #在模拟客户端之间人为制造延迟
result = mc.cas("k1",ret)
print(result)
if result: #如果CAS操作成功,则退出循环,进行下一个入库操作
print(mc.get("k1"))
break
print(mc.get("k1"))
#模拟客户端2,入库4个零件
import memcache
mc = memcache.Client(['192.168.151.105:11211'],debug = True,cache_cas = True)
for x in range(4):
while True:
ret = mc.gets("k1")
ret = ret + 1
input("press any key") #在模拟客户端之间人为制造延迟
result = mc.cas("k1",ret)
print(result)
if result: #如果CAS操作成功,则退出循环,进行下一个入库操作
print(mc.get("k1"))
break
print(mc.get("k1"))
总结
先记到这,后边还没有完全明白!这是今天上课的大概内容就这些,后边那个需要弄明白。