code: func (m *LRUCacher) GetIds(tableName, sql string) interface{} {
  	m.mutex.Lock()
  	defer m.mutex.Unlock()
  	if _, ok := m.sqlIndex[tableName]; !ok {
  		m.sqlIndex[tableName] = make(map[string]*list.Element)
  	}
  	if v, err := m.store.Get(sql); err == nil {
  		if el, ok := m.sqlIndex[tableName][sql]; !ok {
  			el = m.sqlList.PushBack(newSQLNode(tableName, sql))
  			m.sqlIndex[tableName][sql] = el
  		} else {
  			lastTime := el.Value.(*sqlNode).lastVisit
  			// if expired, remove the node and return nil
  			if time.Now().Sub(lastTime) > m.Expired {
  				m.delIds(tableName, sql)
  				return nil
  			}
  			m.sqlList.MoveToBack(el)
  			el.Value.(*sqlNode).lastVisit = time.Now()
  		}
  		return v
  	}
  
  	m.delIds(tableName, sql)
  	return nil
  }
docs: // GetIds returns all bean's ids according to sql and parameter from cache