/bin/bash
# yum -y install libevent-devel
/etc/my.cnf
daemon_memcached_option = "-p11211"
daemon_memcached_engine_lib_name = innodb_engine.so
daemon_memcached_r_batch_size = 1
daemon_memcached_w_batch_size = 1
mysql
mysql> INSTALL PLUGIN daemon_memcached soname "libmemcached.so";
mysql> show plugins;
Stellen Sie sicher, dass das Plugin mit dem Namen daemon_memcached enthalten ist
mysql
mysql> use test
mysql> create table user (id varchar(16), passwd varchar(256), primary key(id)) engine=InnoDB;
mysql> insert into user (id, passwd) values ('user01', '5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8');
mysql
mysql> insert into innodb_memcache.containers (`name`,`db_schema`,`db_table`,`key_columns`,`value_columns`,`flags`,`cas_column`,`expire_time_column`,`unique_idx_name_on_key`) VALUES ('user', 'test', 'user', 'id', 'passwd',0,0,0,'PRIMARY');
mysql> UNINSTALL PLUGIN daemon_memcached;INSTALL PLUGIN daemon_memcached soname "libmemcached.so";
** @@ (Wert in der Namensspalte von innodb_memcache.containers) zugänglich als .key **
↓ Laden Sie spymemcached von http://www.java2s.com/Code/Jar/s/Downloadspymemcached27jar.htm herunter
Dieses Mal wird beim POSTEN von ID und Pass mit JSON 200 zurückgegeben, wenn eine Benutzerregistrierung vorliegt, und 401 wird zurückgegeben, wenn keine Benutzerregistrierung vorliegt (ID und Pass stimmen nicht überein). Erstellen Sie eine Rest-API mit JavaEE JAX-RS. Ich versuchte zu.
Memcache.java
package memcached;
import java.net.InetSocketAddress;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Map;
import javax.enterprise.context.RequestScoped;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import net.spy.memcached.MemcachedClient;
@RequestScoped
@Path("/auth")
@Produces("application/json")
@Consumes("application/json")
public class Memcache {
@POST
public Response auth (Map<String, String> param) {
ResponseBuilder response = null;
try {
MemcachedClient memcachedClient = new MemcachedClient (new InetSocketAddress("192.168.56.102", 11211));
if ( sha256( param.get("password") ).equals( memcachedClient.get( "@@user." + param.get("id") ).toString() ) ) {
response = Response.status(200);
} else {
response = Response.status(401);
}
} catch (Exception e) {
response = Response.status(400);
}
return response.build();
}
private String sha256(String plaintext) throws Exception{
MessageDigest md = MessageDigest.getInstance("SHA-256");
StringBuilder sb = new StringBuilder();
md.update(plaintext.getBytes());
for (byte b : md.digest()) {
String hex = String.format("%02x", b);
sb.append(hex);
}
return sb.toString();
}
}
** "value_columns: muss CHAR-, VARCHAR- oder BLOB-Spalten zugeordnet werden" **, daher ist es unmöglich, Felder vom Typ JSON so zu behandeln, wie sie mit memcached sind **: cry: (telnet) Es gibt eine Antwort, wenn ich es versuche, aber der Inhalt ist durcheinander) → https://dev.mysql.com/doc/refman/5.6/ja/innodb-memcached-internals.html Ich bin mir nicht sicher, ob CAST in Ordnung ist, aber bitte können Sie damit umgehen, ohne etwas zu tun. > Oracle
(Zusatz) Ich habe die generierte Spalte verwendet, um eine Spalte vom Typ TEXT aus einer Spalte vom Typ JSON zu generieren und in value_columns anzugeben.
mysql
mysql> create table userinfo (id varchar(16), infojson json, userinfo text as (cast(infojson as char) engine=InnoDB;
mysql> insert into innodb_memcache.containers (`name`,`db_schema`,`db_table`,`key_columns`,`value_columns`,`flags`,`cas_column`,`expire_time_column`,`unique_idx_name_on_key`) VALUES ('userinfo', 'test', 'userinfo', 'id', 'userinfo',0,0,0,'PRIMARY');
mysql> UNINSTALL PLUGIN daemon_memcached;INSTALL PLUGIN daemon_memcached soname "libmemcached.so";
Infolgedessen ** NG! ** Es wäre möglich, wenn die Umkehrung (vom Texttyp zum JSON-Typ wird eine Spalte generiert), aber da die Aktualisierungsabfrage mit der JSON-Funktion nicht verwendet werden kann, wird der Geschmack halbiert. ..
Recommended Posts