发表于: 2017-11-19 22:18:45

1 613


今天做的事情:


               首先自我检讨。没有之前那种紧迫感,那种专注力。任务六懈怠了,没有好好去找资料看,也没有去咨询一下师兄任务六的要求。导致现在才明白该做什么,然后有点懒,不想动手之类的。这些都是问题。现在开始注意自身的问题,当师兄发现我的状态不对时,告诫我。


              昨天找的一个教程是两个字段的测试,可以跑通,于是思路是根据找个做一个登录,期间遇到bean类未加载成功。空指针异常等。报错500信息。没有全部看完,博韬师兄看了一眼原来是构造方法未定义。


             还是贴一下之前写的代码。

            

@RequestMapping(value = "/loginUser",method = RequestMethod.POST)
public String loginUser(UserBean userBean){
System.out.println(userBean+"刚传来的user2");
int i = serviceI.addlogin(userBean);
if(i>0){
System.out.println("数据库增加成功!");
cachedClient.add("user", userBean);
System.out.println(cachedClient.get("user")+"缓存中的user");
}else{
System.out.println("重复用户名或者增加错误!");
return "error";
}
return "MeSuccess";
}


                 虽然做登录是不行的,不过使用工具类进行增加或者查询,应该就如上所示,使用put,add等,只要整理好数据,一步一步走,不难。 

               

  • 基本数据操作
    • set               设置指定键值对
    • add               若当前键值Key不存在,添加指定键值对
    • replace        若当前键值Key存在,更新当前Value值
    • get               获取指定键值对
    • delete          删除指定键值对
  • 高级数据操作
    • gets             获取键值key对应的值,返回信息中携带版本号
    • cas               指定版本号对键值key进行赋值,版本号不匹配,允许赋值
  • 缓存管理操作
    • stats             统计当前memcached 的数据信息。
    • flush_all      


               基本的数据操作就可以满足日常操作。


               再来说一下之前的测试,首先需要缓存的实体类,必须实现Serializable


               工具类

                

public class MemcachedUtil {

//memcached客户端单例

   private static MemCachedClient cachedClient  = new MemCachedClient();

//初始化连接池
   static {
//获取连接池实例
       SockIOPool pool = SockIOPool.getInstance();

//服务器列表及其权重
       String[] servers = {"127.0.0.1:11210"};
Integer[] weights = {3};

//设置服务器信息
       pool.setServers(servers);
pool.setWeights(weights);
//设置初始化连接数,最小连接数,最大连接数,最大处理时间
       pool.setInitConn(10);
pool.setMinConn(10);
pool.setMaxConn(1000);
pool.setMaxIdle(1000*60*60);

//设置连接池守护线程的睡眠时间
       pool.setMaintSleep(60);

//设置TCP参数,连接超时
       pool.setNagle(false);
pool.setSocketTO(60);
pool.setSocketConnectTO(0);

//初始化并启动连接池
       pool.initialize();

//压缩设置,超过指定大小的都压缩
//      cachedClient.setCompressEnable(true);
//      cachedClient.setCompressThreshold(1024*1024);



}

private MemcachedUtil(){
}

public static boolean add(String key, Object value) {
return cachedClient.add(key, value);
}

public static boolean add(String key, Object value, Integer expire) {
return cachedClient.add(key, value, expire);
}

public static boolean put(String key, Object value) {
return cachedClient.set(key, value);
}

public static boolean put(String key, Object value, Integer expire) {
return cachedClient.set(key, value, expire);
}

public static boolean replace(String key, Object value) {
return cachedClient.replace(key, value);
}

public static boolean replace(String key, Object value, Integer expire) {
return cachedClient.replace(key, value, expire);
}

public static Object get(String key) {
return cachedClient.get(key);
}


               测视类

               

public class MemcachedUtilTest {


@Test
   public void testMemcached() {
MemcachedUtil.put("hello", "lininghu", 60);
String hello = (String) MemcachedUtil.get("hello");
Assert.assertEquals("lininghu", hello);

for(int i = 0; i < 100; ++i) {
UserBean user = new UserBean("xiaohu" + i, "123" + i);
MemcachedUtil.put("user" + i, user, 60);
Object obj = MemcachedUtil.get("user" + i);
// System.out.println(obj);
           Assert.assertEquals(user, obj);
}
}


                以及在spring.xml中的配置,及

          

   private MemCachedClient cachedClient;

@Before
   public void init() {
ApplicationContext context = new ClassPathXmlApplicationContext("Spring.xml");
cachedClient = (MemCachedClient)context.getBean("memcachedClient");
}

@Test
   public void testMemcachedSpring() {
UserBean user = new UserBean( "xiaohu", "你说");
cachedClient.set("user", user);
UserBean cachedBean = (UserBean)user;
System.out.println(cachedBean+"-----------");
Assert.assertEquals(user, cachedBean);
}
}


                   关于缓存这块:使用缓存将数据放到内存中,当有请求数据时,减少对数据库的操作,对于大型网站访问,起到很大作用。

                

              

                      简单看一下,明天要求完成,将缓存实现,配置nginx的负载均衡。如果还有时间,做一下redis的工具类连接java代码对数据操作。



遇到的问题:


                   应该算是思路不清晰,手懒,调整。



收获:


                  思路清晰,会使用memcached的工具类进行操作,redis其实和它差不多的命令。对缓存有所了解。









返回列表 返回列表
评论

    分享到